Cum să obții avatarul utilizatorului autentificat în WordPress
Cum pot obține avatarul unui utilizator pentru a-l afișa în antetul site-ului meu WordPress? Am încercat:
<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>
dar de fiecare dată când utilizatorul autentificat accesează un post al altui autor, avatarul se schimbă cu cel al acelui autor. Vreau ca atunci când un utilizator se autentifică, avatarul său să rămână în partea de sus a paginii tot timpul. Este posibil acest lucru?

Tot ce trebuie să faci este să transmiți adresa de email a utilizatorului curent în funcția get_avatar().
<?php
$current_user = wp_get_current_user();
if ( ($current_user instanceof WP_User) ) {
echo get_avatar( $current_user->user_email, 32 );
}
?>
Iată câteva link-uri pentru detalii:
get_avatar(); wp_get_current_user();
Un răspuns la noua ta problemă din comentariile de mai jos:
<?php
echo '<img src="'. get_the_author_meta( 'user_custom_avatar', $current_user->ID, 32 ) .'" />';
?>
Aveam un punct și virgulă în plus în codul pe care ți l-am dat înainte, acesta ar trebui să funcționeze.
EDITARE
Aceasta o să îți facă viața de 10 ori mai ușoară. Nu știu de ce nu am făcut-o așa de la început. - O să o adaug în exemplul tău exact așa cum vrei.
Răspunsul corect:
<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>
Îmi cer scuze pentru asta.

există vreo modalitate de a obține imaginea încărcată de utilizator? Cum să încorporez această funcție în soluția ta pentru a avea ambele opții: <img src="' . get_the_author_meta( 'user_custom_avatar', $author->author_ID ) . '" alt="" />';

Am încercat să adaug echo get_the_author_meta( 'user_custom_avatar', $current_user->ID, 32 ); și afișează linkul către avatar în loc de avatarul personalizat. Sunt blocat. Poți să mă ajuți, te rog?

Păi, dacă afișează linkul către imagine, pur și simplu pune-l în interiorul unui tag img în tema ta. <img src="<?php echo get_the_author_meta( 'user_custom_avatar', $current_user->ID, 32 ); ?>" />

Nu știu unde să pun codul. Nu afișează nimic. Dacă îl pun în locul echo-ului original, primesc eroarea: unexpected '<'

Păi mi-ai dat funcția dar eu pun codul în header.php, deci nu este o modalitate validă pentru că primesc o eroare. Oh well...

Iată Răspunsul Real al lui Drew Gourley fără eroare:
<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); // Rezolvă sintaxa eliminând `$post->post_author` inutil din interiorul funcției `get_avatar`
} ?>
</a>
