Cum să obții avatarul utilizatorului autentificat în WordPress

7 nov. 2011, 23:45:52
Vizualizări: 13.8K
Voturi: 0

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?

1
Comentarii

get_avatar afișează doar un siluetă misterioasă implicită în locul utilizatorului autentificat!

jimilesku jimilesku
7 nov. 2011 23:54:47
Toate răspunsurile la întrebare 2
6

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.

8 nov. 2011 01:03:16
Comentarii

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="" />';

jimilesku jimilesku
8 nov. 2011 14:01:52

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?

jimilesku jimilesku
8 nov. 2011 14:09:38

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 ); ?>" />

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

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

jimilesku jimilesku
8 nov. 2011 19:00:37

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...

jimilesku jimilesku
8 nov. 2011 22:54:33

Asta pentru că am dat-o în bară, e greu să introduc cod în aceste comentarii. Vezi al doilea bloc de comentarii adăugat la răspunsul meu.

Drew Gourley Drew Gourley
9 nov. 2011 00:05:59
Arată celelalte 1 comentarii
0

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>
7 oct. 2024 18:07:01