Как получить 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.
$ class (string) CSS-класс для <img>
элемент. Обратите внимание, что BP довольно широко использует класс "аватар" в своем стиле по умолчанию, поэтому, если вы планируете передать пользовательское значение, подумайте о добавлении его в "аватар" (например, "аватар foo"), а не о его полной замене. По умолчанию: "аватар".
$ css_id (string|bool) CSS-идентификатор для <img>
элемент. По умолчанию: false.
$ title (string) Атрибут title для <img>
элемент. По умолчанию: false.
$ alt (строка) Атрибут 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 (string) HTML-атрибуты для вставки в элемент IMG. Не продезинфицировать. По умолчанию: ''.
$ схема
(строка) URL-схема для использования. Смотрите set_url_scheme() для принятых значений. По умолчанию ноль.
$ rating (string) Для какой оценки показывать 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
)
);
}