Как получить URL для публикации автора Аватар BuddyPress внутри WordPress Post Loop

Вопрос

Как получить только URL аватара автора сообщения?

Требования

Я хочу, чтобы URL-адрес изображения, размещенного на моем сайте.

Изображение будет вызываться в цикле сообщения.

Автор поста — это человек, изображение аватара которого я хочу отобразить.

Что я пробовал

Куча вещей, но в основном <?php echo get_avatar_url('user_email'); ?>

Он возвращает URL-адрес изображения «таинственный человек» по умолчанию, размещенного в Gravatar, несмотря на то, что это аватар, загруженный на мой сайт для этого тестового пользователя.

осветление

Я не хочу, чтобы Gravatar размещал изображение.

К ссылке

Ссылка на код WordPress для get_avatar_url ()

В настоящее время нет завершенной записи Кодекса WordPress для него.

Обеспокоенность

Я начинаю думать со всей неоднозначностью WP между аватаром и Gravatar, что get_avatar_url предназначен исключительно для изображений Gravatar, которые, конечно, доступны только зарегистрированным пользователям Gravatar. Надеюсь, кто-нибудь скажет мне, что я не прав.

Возможного интереса

  • Сайт использует Buddypress

  • При установке этого сайта Buddypress используются пользовательские размеры аватаров.

  • Этот сайт использует свою собственную тему

  • Пользователь загрузил аватар на сайт

  • У пользователя нет аккаунта gravatar (тестирование без, так как большинство пользователей не имеют аккаунтов gravatar. Я не хочу, чтобы у большинства пользователей вместо аватаров были загадочные люди)

  • Следующий код прекрасно работает для извлечения размещенного на сайте аватара (но, конечно, выводит тег изображения и классы, а не чистый URL-адрес, который мне требуется)

    <?php echo get_avatar( get_the_author_meta( 'ID' ), 180 ); ?>
    

2

Решение

Похоже, документации по этому вопросу не существует, поэтому неудивительно, что это было сложно.

Чтобы получить URL-адрес аватара BuddyPress, используйте такую ​​функцию:

// Assuming $user_id is the id for the desired user
echo bp_core_fetch_avatar (
array(  'item_id' => $user_id, // id of user for desired avatar
'type'    => 'full',
'html'   => FALSE     // FALSE = return url, TRUE (default) = return img html
)
);

Вот документация (немного отформатированная мной) из исходного файла php:

bp_core_fetch_avatar( $args );

Вернуть: строка Форматированный HTML <img> элемент или необработанный URL-адрес аватара на основе $ html arg.

Описание:

Получить аватар для объекта BuddyPress.
Поддерживает аватары для пользователей, групп и блогов по умолчанию, но может быть
расширен для поддержки пользовательских компонентов.

Эта функция дает приоритет локально загруженным аватарам. Когда местный
аватар не найден, Gravatar запрашивается.

использование

<?php  bp_core_fetch_avatar( $args ); ?>

Использование по умолчанию:

<?php  $args = array(
'item_id'       => false,
'object'        => 'user',
'type'          => 'thumb',
'avatar_dir'    => false,
'width'         => false,
'height'        => false,
'class'         => 'avatar',
'css_id'        => false,
'title'         => false,
'alt'           => '',
'email'         => false,
'no_grav'       => false,
'html'          => true,
'extra_attr'    => '',
'scheme'        => null,
'rating'        => {setting for 'avatar rating' option},
'force_default' => false
);

bp_core_fetch_avatar( $args ); ?>

Параметры:

Все аргументы технически необязательны; некоторые будут, если не предоставлены, автоматически обнаруживаться bp_core_fetch_avatar (). Это автоопределение описано более подробно при обсуждении конкретных аргументов.

item_id
(int | bool) Числовой идентификатор элемента, для которого вы запрашиваете аватар (например, идентификатор пользователя). Если «item_id» отсутствует, функция пытается определить идентификатор из «объекта» + текущего контекста: если «объект» — «пользователь», а текущая страница — страница пользователя, то «item_id» по умолчанию будет отображаться Идентификатор пользователя; если «группа» и на странице группы, к текущему идентификатору группы; если ‘блог’, к текущему идентификатору блога. Если никакой ‘item_id’ не может быть определен таким образом, функция возвращает false. По умолчанию: false.

объект $
(строка) Тип объекта, для которого вы получаете аватар. BuddyPress изначально поддерживает три опции: «пользователь», «группа», «блог»; плагин может зарегистрироваться больше. По умолчанию: «пользователь».

$ Тип
(строка) При загрузке нового аватара в BP сохраняются «ползунковые» и «полные» версии. Этот параметр указывает, хотите ли вы использовать аватар «полный» или «маленький». По умолчанию: «большой палец».

$ avatar_dir
(string | bool) (автоопределение) Имя подкаталога, в котором должен быть найден запрошенный аватар. Если значение не передается, avatar_dir выводится из «object»: «user» становится «avatars», «group» становится «group-avatars», «blog» становится «blog-avatars».

Помните, что эта строка обозначает подкаталог основного каталога аватаров BP (обычно основанный на {@link wp_upload_dir ()}); это строка типа ‘group-avatars’, а не полный путь к каталогу. Как правило, будет необходимо переопределить значение по умолчанию, если аватары хранятся не в месте по умолчанию. По умолчанию: false.

$ ширина
(int | bool) (определяется автоматически) Запрашиваемая ширина аватара. Единицей является пикс. Это значение используется для построения атрибута ‘width’ для <img> элемент. Если значение не передается, BP использует глобальную ширину аватара для этого типа аватара. По умолчанию: false.

$ высота
(int | bool) (определяется автоматически) Запрашиваемая высота аватара. Единицей является пикс. Это значение используется для построения атрибута ‘height’ для <img> элемент. Если значение не передано, BP использует глобальную высоту аватара для этого типа аватара. По умолчанию: false.

$ класс
(строка) Класс CSS для <img> элемент. Обратите внимание, что BP довольно широко использует класс «аватар» в своем стиле по умолчанию, поэтому, если вы планируете передать пользовательское значение, подумайте о добавлении его в «аватар» (например, «аватар foo»), а не о его полной замене. По умолчанию: «аватар».

$ css_id
(string | bool) Идентификатор CSS для <img> элемент. По умолчанию: false.

$ название
(строка) Атрибут заголовка для <img> элемент. По умолчанию: false.

$ альт
(строка) Атрибут alt для <img> элемент. В BP это значение обычно передается функциями-обертками, где под рукой находятся данные, необходимые для объединения строки; увидеть
{@link bp_get_activity_avatar ()} для примера. По умолчанию: ».

$ по электронной почте
(string | bool) Письмо для использования в запросах Gravatar. Если не указано иное, BP использует Gravatar в качестве запасного варианта для аватаров, которые не предоставляются локально. API Gravatar требует использования хэша адреса электронной почты пользователя; этот аргумент обеспечивает это. Если не предоставлено, функция выведет это: для пользователей, получая электронную почту пользователя из базы данных, для групп / блогов, путем объединения «{$ item_id} — {$ object} @ {bp_get_root_domain ()}». Пользовательский запрос добавляет накладные расходы, поэтому рекомендуется, чтобы функции-оболочки указывали значение «email» при запросе идентификаторов пользователя. По умолчанию: false.

$ no_grav
(bool) Отключить ли откат Gravatar по умолчанию. По умолчанию BP возвращается к Gravatar, когда не может найти локальный аватар. В некоторых случаях это может быть нежелательно, и в этом случае для no_grav должно быть установлено значение true. Чтобы отключить альтернативные варианты Gravatar, см. Фильтр «bp_core_fetch_avatar_no_grav». По умолчанию: false.

$ HTML
(bool) Стоит ли возвращать <img> HTML-элемент против необработанного URL-адреса аватара. Если ложно, <img>-специфичные аргументы (например, ‘css_id’) будут игнорироваться. По умолчанию: правда.

$ extra_attr
(строка) HTML-атрибуты для вставки в элемент IMG. Не продезинфицировать. По умолчанию: ».

$ схема
(строка) URL-схема для использования. Смотрите set_url_scheme () для принятых значений. По умолчанию ноль.

$ рейтинг
(строка) Для какой оценки показывать Gravatars. Принимает «G», «PG», «R», «X». По умолчанию это значение параметра «avatar_rating».

$ force_default
(bool) Используется при создании URL Gravatar. Нужно ли форсировать
изображение независимо от того, существует ли Gravatar. По умолчанию: false.

Заметки:

Чтобы отключить резервные варианты запроса Gravatar локально, добавьте этот фильтр:

add_filter( 'bp_core_fetch_avatar_no_grav', '__return_true' );
5

Другие решения

Я не уверен, что этот ответ был включен в ответ Кейла, поэтому я удалил его на случай, если он пригодится кому-либо еще.

в цикле (скажем, single.php)

<img class="" src="<?php
$authorUserID = get_the_author_meta('ID');  // get the user id of the post author
echo bp_core_fetch_avatar (
array(  'item_id'   => $authorUserID,       // output user id of post author
'type'      => 'full',
'html'      => FALSE               // FALSE = return url, TRUE (default) = return url wrapped with html and css classes
)
);
?>">

или вызов из файла functions.php в папке темы

вызов (из вашего цикла, скажем, single.php)

<?php custom_get_author_avatar_url(); ?>

функция (место в functions.php)

function custom_get_author_avatar_url() {
$authorUserID = get_the_author_meta('ID');  // get the user id of the post author
echo bp_core_fetch_avatar (
array(  'item_id'   => $authorUserID,       // output user id of post author
'type'      => 'full',
'html'      => FALSE            // FALSE = return url, TRUE (default) = return url wrapped with html and css classes
)
);
}
0

По вопросам рекламы [email protected]