Как получить 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
    ) 
    ); 
}
Другие вопросы по тегам