Получение аватара авторизованного пользователя в WordPress

7 нояб. 2011 г., 23:45:52
Просмотры: 13.8K
Голосов: 0

Как я могу получить аватар пользователя для отображения в шапке моего сайта на WordPress? Я пробовал:

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

но каждый раз, когда авторизованный пользователь переходит на пост другого автора, аватар меняется на аватар этого автора. Мне нужно, чтобы после входа пользователя его аватар оставался вверху страницы все время. Можно ли это реализовать?

1
Комментарии

get_avatar просто вставляет стандартного загадочного человека вместо авторизованного пользователя!

jimilesku jimilesku
7 нояб. 2011 г. 23:54:47
Все ответы на вопрос 2
6

Все, что вам нужно сделать, это передать текущий email пользователя в функцию get_avatar().

<?php 

$current_user = wp_get_current_user();

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

?>

Вот несколько ссылок для уточнения:

get_avatar(); wp_get_current_user();

Ответ на вашу новую проблему в комментариях ниже:

<?php 

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

?>

В предыдущем коде у меня была лишняя точка с запятой, этот вариант должен работать.

ИЗМЕНЕНО

Это сделает всё в 10 раз проще для вас. Не знаю, почему я не сделал так с самого начала. - Я просто добавлю это в ваш пример так, как вам нужно.

Правильный ответ:

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

Извините за это.

8 нояб. 2011 г. 01:03:16
Комментарии

есть ли способ получить изображение, загруженное пользователем? Как включить эту функцию в ваше решение, чтобы были оба варианта: <img src="' . get_the_author_meta( 'user_custom_avatar', $author->author_ID ) . '" alt="" />';

jimilesku jimilesku
8 нояб. 2011 г. 14:01:52

Я попытался добавить echo get_the_author_meta( 'user_custom_avatar', $current_user->ID, 32 ); и он выводит ссылку на аватар вместо пользовательского аватара. Я застрял. Не могли бы вы помочь мне?

jimilesku jimilesku
8 нояб. 2011 г. 14:09:38

Ну, если он выводит ссылку на изображение, просто поместите её внутрь тега img в вашей теме. <img src="<?php echo get_the_author_meta( 'user_custom_avatar', $current_user->ID, 32 ); ?>" />

Drew Gourley Drew Gourley
8 нояб. 2011 г. 18:36:30

Я не знаю, куда вставить код. Он ничего не показывает. Если я размещу его вместо оригинального echo, то получаю ошибку: unexpected '<'

jimilesku jimilesku
8 нояб. 2011 г. 19:00:37

Ну, вы дали мне функцию, но я размещаю код в header.php, и это не работает, потому что я получаю ошибку. Что ж...

jimilesku jimilesku
8 нояб. 2011 г. 22:54:33

Это потому что я всё перепутал, сложно вставлять код в эти чертовы комментарии. Смотри второй блок комментариев в моём ответе.

Drew Gourley Drew Gourley
9 нояб. 2011 г. 00:05:59
Показать остальные 1 комментариев
0

Вот правильный ответ Дрю Гурли без ошибки:

<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); // Исправленный синтаксис - удален лишний параметр `$post->post_author` внутри `get_avatar`
    } ?>
</a>
7 окт. 2024 г. 18:07:01