Вопрос
Как получить только 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 ); ?>
Похоже, документации по этому вопросу не существует, поэтому неудивительно, что это было сложно.
Чтобы получить 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' );
Я не уверен, что этот ответ был включен в ответ Кейла, поэтому я удалил его на случай, если он пригодится кому-либо еще.
в цикле (скажем, 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
)
);
}