Soporte » Multisitio » Foto de perfil

  • Hola chic@s,

    tengo un problema ya que la foto de perfil que subo en los ajustes de uno de los dos temas de mi multisitio no se actualiza en el otro. Hay otros componentes como posts, mensajes, etc que si que se pueden ver desde las distintas paginas de ajustes de los dos temas pero parece que la foto es independiente, aun cuando en ambos casos usa Gravatar…

    Sabeis alguna manera de que subiendo la foto de perfil en cualquiera de los dos temas se me actualice en ambos?

    Muchas gracias

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • Hola, si estás usando Gravatar y en ambos sitios está registrado el usuario con el mismo correo, debería verse la misma foto de perfil en los dos.

    En tu mensaje hay un par de cosas que me despistan:

    1) Dices que has subido una foto. En WordPress no se puede subir una foto al perfil de usuario directamente salvo que estés usando un plugin para gestionarlo. Si es así ¿cuál es? y ¿está activado en ambos sitios del multisite?

    2) Si usas Gravatar tampoco necesitas subir una foto a tus WP, con lo que aun entiendo menos que es lo que quieres decir cuando afirmas que has subido una foto para ese usuario.

    Iniciador del debate jaimebaron

    (@jaimebaron)

    Hola,

    gracias por la respuesta. Te especifico a tus dos preguntas:

    1) estoy usando buddypress en ambos temas. pero no lo tengo activo para la red. Lo tengo activo en cada site (los temas pertenecen al mismo desarrollador, y comparten contenido como mensajes, grupos etc pero la foto de perfil no). En este foro de buddypress comentaban el mismo problema pero nadie dio una solucion: https://buddypress.org/support/topic/centralize-profile-photo-and-cover-image-in-multisite/
    Anticipandome a una posible respuesta tuya no puedo activar el plugin para la red ya que los ajustes del sitio principal se superponen a la pagina de ajustes del segundo sitio.

    2) Tengo la posibilidad de usar gravatar, pero no quiero usarlo ya que tendria que hacer a mis usuarios que se registren tambien en gravatar y es un lio. Me explique mal en mi primer post, existe la posibilidad de usar gravatar pero no quiero porque pierdo user experience.

    Cualquier otra duda decidme. Muchas gracias de antemano

    ¡Ah! ok, es un tema de BuddyPress. Voy a pegarle un toque a una compañera de la comunidad que controla de BuddyPress a ver si puede echarte un cable.

    Hola @jaimebaron,

    Si tienes BP activo en los sitios 1 y 2 por separado (no activos en red), las tablas de BP no se comparten entre los dos sitios y por eso no se ve la foto de perfil.

    La solución más sencilla, en mi opinión, es solucionar los conflictos entre los temas del sitio 1 y 2 para que puedas activar BP en la red.

    Si eso es completamente imposible, entonces podrías buscar en el código del tema 2, y añadir la siguiente función antes de la llamada que recibe la imagen de perfil del usuario:
    https://codex.wordpress.org/Function_Reference/switch_to_blog

    De esa forma, cambiarías al blog_id 1, cogería la imagen de perfil del usuario activada en el sitio 1, muestras la imagen, y después vuelves al blog_id del sitio 2 con la siguiente función:https://codex.wordpress.org/Function_Reference/restore_current_blog

    Ojo, en su día, dichas funciones que he mencionado arriba eran costosas en cuanto a recursos del servidor, así que te recomiendo investigarlo antes de subirlo a producción.

    Para este caso, te recomiendo que te vayas al foro de soporte de BuddyPress (en inglés), donde participan los programadores del plugin y muchas de las personas más activas con proyectos de BP del mundo:
    https://buddypress.org/support/

    Espero que esto te haya servido de ayuda! 🙂

    Iniciador del debate jaimebaron

    (@jaimebaron)

    Muchisimas gracias chicos por vuestros comentarios. Da gusto que la gente se implique y te ayude tanto. Os cuento, que he estado esta semana trabajando en lo que me recomendasteis.

    La opción más sencilla que me comentas (poner buddypress para toda la red), no me vale en mi caso, ya que cuando quiero acceder a ajustes del tema 2 me redirige a los ajustes del tema 1 (y entonces pierdo la capacidad de ver ajustes específicos del tema 2 que si que necesito).

    En cuanto a la segunda solución que planteas Rocío, he estado pegandome con ello pero no lo he conseguido. Encontré el codigo:

    <h2><?php _e( ‘Change Profile Photo’, ‘listopia’ ); ?></h2>

    <?php

    /**
    * Fires before the display of profile avatar upload content.
    *
    * @since 1.1.0
    */
    do_action( ‘bp_before_profile_avatar_upload_content’ ); ?>

    <?php if ( !(int)bp_get_option( ‘bp-disable-avatar-uploads’ ) ) : ?>

    <p><?php printf( __( ‘Your profile photo will be used on your profile and throughout the site. If there is a Gravatar associated with your account email we will use that, or you can upload an image from your computer.’, ‘listopia’ ), esc_url_raw( ‘gravatar.com’ ) ); ?></p>

    <form action=»» method=»post» id=»avatar-upload-form» class=»standard-form» enctype=»multipart/form-data»>

    <?php if ( ‘upload-image’ == bp_get_avatar_admin_step() ) : ?>

    <?php wp_nonce_field( ‘bp_avatar_upload’ ); ?>
    <p><?php _e( ‘Click below to select a JPG, GIF or PNG format photo from your computer and then click \’Upload Image\’ to proceed.’, ‘listopia’ ); ?></p>

    <p id=»avatar-upload»>
    <label for=»file» class=»bp-screen-reader-text»><?php
    /* translators: accessibility text */
    _e( ‘Select an image’, ‘listopia’ );
    ?></label>
    <input type=»file» name=»file» id=»file» />
    <input type=»submit» name=»upload» id=»upload» value=»<?php esc_attr_e( ‘Upload Image’, ‘listopia’ ); ?>» />
    <input type=»hidden» name=»action» id=»action» value=»bp_avatar_upload» />
    </p>

    <?php if ( bp_get_user_has_avatar() ) : ?>
    <p><?php _e( «If you’d like to delete your current profile photo but not upload a new one, please use the delete profile photo button.», ‘listopia’ ); ?></p>
    <p>«><?php _e( ‘Delete My Profile Photo’, ‘listopia’ ); ?></p>
    <?php endif; ?>

    <?php endif; ?>

    <?php if ( ‘crop-image’ == bp_get_avatar_admin_step() ) : ?>

    <h5><?php _e( ‘Crop Your New Profile Photo’, ‘listopia’ ); ?></h5>

    » id=»avatar-to-crop» class=»avatar» alt=»<?php esc_attr_e( ‘Profile photo to crop’, ‘listopia’ ); ?>» />

    <div id=»avatar-crop-pane»>
    » id=»avatar-crop-preview» class=»avatar» alt=»<?php esc_attr_e( ‘Profile photo preview’, ‘listopia’ ); ?>» />
    </div>

    <input type=»submit» name=»avatar-crop-submit» id=»avatar-crop-submit» value=»<?php esc_attr_e( ‘Crop Image’, ‘listopia’ ); ?>» />

    <input type=»hidden» name=»image_src» id=»image_src» value=»<?php bp_avatar_to_crop_src(); ?>» />
    <input type=»hidden» id=»x» name=»x» />
    <input type=»hidden» id=»y» name=»y» />
    <input type=»hidden» id=»w» name=»w» />
    <input type=»hidden» id=»h» name=»h» />

    <?php wp_nonce_field( ‘bp_avatar_cropstore’ ); ?>

    <?php endif; ?>

    </form>

    <?php
    /**
    * Load the Avatar UI templates
    *
    * @since 2.3.0
    */
    bp_avatar_get_templates(); ?>

    <?php else : ?>

    <p><?php printf( __( ‘Your profile photo will be used on your profile and throughout the site. To change your profile photo, please create an account with Gravatar using the same email address as you used to register with this site.’, ‘listopia’ ), esc_url_raw( ‘gravatar.com’ ) ); ?></p>

    <?php endif; ?>

    <?php

    /**
    * Fires after the display of profile avatar upload content.
    *
    * @since 1.1.0
    */
    do_action( ‘bp_after_profile_avatar_upload_content’ ); ?>

    Pero no pude modificarlo para que funcionara.

    Además encontré la parte del codigo donde hace el loop cada vez que llama al perfil:

    $avatar_args = array(
    ‘type’ => ‘thumb’,
    ‘width’ => false,
    ‘height’ => false,
    ‘class’ => ‘avatar img-circle author-img card-profile-img rounded-circle’,
    ‘id’ => false
    ); ?>

    <li class=»shortcode-output»>

    <?php
    $strModule = ‘moduleBpGrid’;
    if( class_exists( $strModule ) ) {
    $objContent = new stdClass;
    $objContent->ID = $objContent->post_status = $objContent->post_content = $objContent->post_type = null;
    $objContent->post_author = bp_get_member_user_id();
    $objContent->post_title = bp_get_member_name();
    $objArticle = new $strModule( $objContent, Array( ‘hide_meta’ => true ) );

    $objArticle->permalink = bp_get_member_permalink();
    $objArticle->title = $objArticle->get_title();
    $objArticle->avatar = bp_get_member_avatar( $avatar_args );

    Pero tampoco tuve éxito.

    Despues de todo este rollo que os he contado, se os ocurre otra manera, o alomejor es que he utilizado mal la función que me recomendate. Mis temas tienen id 1 y id 2 y utilizo la funcion que me has recomendado así:

    switch_to_blog( 1 );
    —-
    restore_current_blog();

    Muchas gracias de nuevo y de antemano y un saludo

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • El debate ‘Foto de perfil’ está cerrado a nuevas respuestas.