Получить только URL изображения профиля автора внутри цикла

5 сент. 2015 г., 23:54:54
Просмотры: 36.1K
Голосов: 2

Мне нужно получить ссылку на изображение профиля автора записи.

Я знаю, что можно использовать get_avatar();, но это выводит полную разметку изображения

<img src="http://.../img.png" class="avatar img-responsive" alt="image">

Но нужен только атрибут src изображения профиля автора.

Как я могу это получить? Возможно, мы можем использовать php или js, чтобы извлечь только значение src из общего вывода.

Мой второй вопрос: как добавить это изображение как post_thumbnail, если для записи не существует миниатюры?

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

Ответ здесь: http://wordpress.stackexchange.com/a/188288/24875 Просто используйте функцию get_avatar_url().

Christine Cooper Christine Cooper
6 сент. 2015 г. 00:24:28

А, понимаю, это новая функция, поэтому я не нашел её в кодексе. Есть комментарии по второй части моего вопроса?

hkchakladar hkchakladar
6 сент. 2015 г. 00:47:29

В цикле можно проверить наличие миниатюры с помощью функции has_post_thumbnail(). Если возвращает false, отображайте ваше изображение.

Alexey Alexey
6 сент. 2015 г. 01:35:36

Возможный дубликат вопроса Как получить URL аватара вместо HTML IMG тега при использовании get_avatar?

Andy Macaulay-Brook Andy Macaulay-Brook
8 окт. 2016 г. 13:52:26
Все ответы на вопрос 5
0

Поместите следующий код внутри цикла, чтобы удовлетворить ваши потребности:

<?php
$get_author_id = get_the_author_meta('ID');
$get_author_gravatar = get_avatar_url($get_author_id, array('size' => 450));

if(has_post_thumbnail()){
    the_post_thumbnail();
} else {
    echo '<img src="'.$get_author_gravatar.'" alt="'.get_the_title().'" />';
}
?>
30 мар. 2017 г. 00:59:05
2

просто используйте функцию get_avatart_uri() и передайте email пользователя в качестве параметра - она вернет URL аватара

17 нояб. 2016 г. 05:06:01
Комментарии

Я не думаю, что get_avatart_uri() является существующей функцией в WordPress...

Sven Sven
17 нояб. 2016 г. 05:37:14

https://developer.wordpress.org/reference/functions/get_avatar_url/, похоже на опечатку.

prosti prosti
17 нояб. 2016 г. 08:28:23
2

Помимо использования get_avatar_url, вы также можете использовать get_avatar. Если я не ошибаюсь, это то, что вам нужно.

Вопрос 1

Получить ссылку на аватар автора записи


<?php 
    // выводим только если функция gravatar существует
    if (function_exists('get_avatar')) { ?>

    <?php
    // Преобразуем email в md5 хэш и устанавливаем размер изображения 32px
    $gravatar = 'http://www.gravatar.com/avatar/' . md5(strtolower($user_email)) . '&s=32';

    // Преобразуем email в md5 хэш без указания размера для использования в качестве изображения записи
    $gravatar_bg = 'http://www.gravatar.com/avatar/' . md5(strtolower($user_email)) . '';
    ?>
    <!-- Выводим gravatar как img src -->
    <img src="<?php echo "$gravatar";?>" alt="Аватар пользователя" title="Аватар пользователя">

    <!-- Выводим gravatar как background url -->
    <div class="avatar" style="background: url(<?php echo $gravatar_bg ?>);" ></div>

<?php } ?>

Вопрос 2

Добавить это изображение как миниатюру записи, если для записи нет миниатюры


<?php
    // Проверяем, есть ли у записи миниатюра
    // if ( has_post_thumbnail() ) {            // вариант 1
    if ( '' != get_the_post_thumbnail() ) {     // вариант 2

    // если есть, выводим миниатюру
      the_post_thumbnail();

    } else {
     // если нет, показываем gravatar изображение
     echo '<img src="<?php echo "$gravatar";?>" alt="Аватар пользователя" title="Аватар пользователя">';
    }
?>

Надеюсь, это поможет, удачи!


Ресурсы: Использование Gravatars | hast_post_thumbnail

6 сент. 2015 г. 02:22:29
Комментарии

Привет, я знаю, что могу проверить if(get_the_post_thumbnail()) и вывести это изображение в шаблоне. Но это не устанавливает post_thumbnail, а только выводит его в конкретном шаблоне. Я хочу, чтобы это set_post_thumbnail. Как это сделать?

hkchakladar hkchakladar
6 сент. 2015 г. 12:36:48

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

Jentan Bernardus Jentan Bernardus
6 сент. 2015 г. 20:47:09
2

ОБНОВЛЕНИЕ (22 мая 2021) - Я использую плагин Simple Local Avatars, чтобы пользователи могли обновлять изображения локально. Приведённое ниже решение будет работать только если вы используете этот плагин.


На случай, если кто-то ищет полноразмерное изображение автора и не может его найти. Вот небольшой хак.

Простой способ

$avatar_url  = get_avatar_url( $author_id ); // это даст изображение 96x96.
$final_url   = str_replace('-96x96.', '.',$author_avatar_url);

Замена -96x96. на просто .. Нужно только убедиться, что имя изображения не содержит эту строку. Альтернативно можно найти ту же строку с конца и сделать замену с помощью substr_replace(), например:

Более точный способ

$avatar_url  = get_avatar_url( $author_id ); // это даст изображение 96x96.
$replace   = '-96x96.';
$pos = strpos($avatar_url, $replace, -(strlen($replace)+5)); // +5 для длины расширения
$final_url = substr_replace($avatar_url, '.', $pos, strlen($replace));

Это первый результат в Google при поиске полноразмерного изображения автора, так что, возможно, кому-то поможет.

13 мая 2021 г. 12:58:13
Комментарии

Я не думаю, что это сработает для стандартных Gravatars: размер не указан в URL таким образом, это параметр ?s=. Как у вас настроены аватары? Кроме того, у get_avatar_url есть документированный параметр 'size' для массива args.

Rup Rup
13 мая 2021 г. 13:48:24

@Rup Извините!!! Вы правы, я использую "Simple Local Avatars"(https://wordpress.org/plugins/simple-local-avatars/), чтобы пользователи могли устанавливать свои изображения профиля локально, и, кажется, этот плагин позволяет мне получать URL в таком формате. Совсем забыл про этот плагин. Я добавлю информацию о нём в ответ выше.

Abhishek Sachan Abhishek Sachan
22 мая 2021 г. 21:01:18
0

Вот всё, что я делаю, чтобы добавить аватар зарегистрированного пользователя.

<img src="<?php echo get_avatar_url(get_the_author_meta('ID')); ?>" class="YOUR CSS CLASS">
6 окт. 2021 г. 06:54:07