Obtener el avatar del usuario logeado en WordPress

7 nov 2011, 23:45:52
Vistas: 13.8K
Votos: 0

¿Cómo puedo obtener el avatar de un usuario para mostrar en el encabezado de mi sitio WordPress? He probado:

<a href="<?php echo get_author_posts_url($post->post_author); ?>" title="<?php the_author_meta( 'display_name', $post->post_author ); ?>">
<?php if( get_the_author_meta( 'user_custom_avatar', $post->post_author ) != '' ) { ?>
    <img src="<?php the_author_meta( 'user_custom_avatar', $post->post_author ); ?>" alt="" />
    <?php echo $curauth->display_name; ?>
<?php } else { ?>
    <?php echo get_avatar( get_the_author_meta( 'user_email', $post->post_author ), '80' ); ?>
<?php } ?>
</a>

Pero cada vez que el usuario logeado visita un post de otro autor, el avatar cambia al de ese autor. Quiero que cuando un usuario inicie sesión, su avatar permanezca siempre en la parte superior de la página. ¿Es posible hacer esto?

1
Comentarios

¡get_avatar solo coloca un hombre misterioso predeterminado en lugar del usuario conectado!

jimilesku jimilesku
7 nov 2011 23:54:47
Todas las respuestas a la pregunta 2
6

Todo lo que necesitas hacer es pasar la dirección de correo electrónico del usuario actual a la función get_avatar().

<?php 

$current_user = wp_get_current_user();

if ( ($current_user instanceof WP_User) ) {
    echo get_avatar( $current_user->user_email, 32 );
}

?>

Aquí hay algunos enlaces con detalles específicos:

get_avatar(); wp_get_current_user();

Una respuesta a tu nuevo problema en los comentarios a continuación:

<?php 

echo '<img src="'. get_the_author_meta( 'user_custom_avatar', $current_user->ID, 32 ) .'" />';

?>

Tenía un punto y coma de más en el código que te di antes, esto debería funcionar.

EDITADO

Esto lo hará 10 veces más fácil para ti. No sé por qué no lo hice de esta manera desde el principio. - Simplemente lo agregaré a tu fragmento de ejemplo como lo deseas.

La respuesta real:

<a href="<?php echo get_author_posts_url($post->post_author); ?>" title="<?php the_author_meta( 'display_name', $post->post_author ); ?>">
<?php if( get_the_author_meta( 'user_custom_avatar', $post->post_author ) != '' ) { ?>
    <img src="<?php the_author_meta( 'user_custom_avatar', $post->post_author ); ?>" alt="" />
    <?php echo $curauth->display_name; ?>
<?php } else { 
    $current_user = wp_get_current_user();
    echo get_avatar( $current_user->user_email, $post->post_author ), '80' ); } ?>
</a>

Lo siento por eso.

8 nov 2011 01:03:16
Comentarios

¿hay alguna manera de obtener la imagen que subió el usuario? ¿Cómo incorporar esta función en tu solución para tener ambas opciones: <img src="' . get_the_author_meta( 'user_custom_avatar', $author->author_ID ) . '" alt="" />';

jimilesku jimilesku
8 nov 2011 14:01:52

Intenté agregar echo get_the_author_meta( 'user_custom_avatar', $current_user->ID, 32 ); y muestra el enlace al avatar en lugar del avatar personalizado. Estoy atascado. ¿Podrías ayudarme?

jimilesku jimilesku
8 nov 2011 14:09:38

Bueno, si está mostrando el enlace a la imagen, solo colócalo dentro de una etiqueta img en tu tema. <img src="<?php echo get_the_author_meta( 'user_custom_avatar', $current_user->ID, 32 ); ?>" />

Drew Gourley Drew Gourley
8 nov 2011 18:36:30

No sé dónde colocar el código. No muestra nada. Si lo pongo en lugar del echo original me da el error de: unexpected '<'

jimilesku jimilesku
8 nov 2011 19:00:37

Bueno, me diste la función pero estoy colocando el código en header.php, así que esta no es una forma válida porque recibo un error. Oh bueno...

jimilesku jimilesku
8 nov 2011 22:54:33

Eso es porque lo arruiné, es difícil poner código en estos molestos comentarios. Mira el segundo bloque de comentarios agregado a mi respuesta.

Drew Gourley Drew Gourley
9 nov 2011 00:05:59
Mostrar los 1 comentarios restantes
0

Aquí está la Respuesta Real de Drew Gourley sin el error:

<a href="<?php echo esc_url(get_author_posts_url($post->post_author)); ?>" title="<?php echo esc_attr(get_the_author_meta('display_name', $post->post_author)); ?>">
    <?php if (get_the_author_meta('user_custom_avatar', $post->post_author) != '') { ?>
        <img src="<?php echo esc_url(get_the_author_meta('user_custom_avatar', $post->post_author)); ?>" alt="<?php echo esc_attr(get_the_author_meta('display_name', $post->post_author)); ?>" />
        <?php echo esc_html(get_the_author_meta('display_name', $post->post_author)); ?>
    <?php } else { 
        $current_user = wp_get_current_user(); 
        echo get_avatar($current_user->user_email, 80); // Corregir la sintaxis aquí eliminando el `$post->post_author` innecesario dentro de `get_avatar`
    } ?>
</a>
7 oct 2024 18:07:01