WedX - журнал о программировании и компьютерных науках

Как получить URL-адрес для публикации аватара пользователя BuddyPress автора внутри цикла публикации Wordpress

Вопрос

Как получить только 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 ); ?>
    

  • Аватары, которые использует WordPress, — это Gravatars. Когда вы говорите, что аватар загружен на мой сайт - где именно вы загрузили свой аватар? WordPress из коробки (насколько мне известно) не поддерживает настраиваемые аватары. 01.01.2016
  • загружено через расширенные профили buddypress ... изменить пользователя -> расширенные профили -> фото профиля ... получено с помощью get_avatar из /wp-content/uploads/avatars/userID/aBunchOfNumbers-bpfull.jpg 02.01.2016

Ответы:


1

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

Чтобы получить 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.

Описание:

Получите аватар для объекта 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$rating (string) Для какой оценки отображать Gravatar. Принимает «G», «PG», «R», «X». По умолчанию используется значение параметра avatar_rating.

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

Примечания:

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

add_filter( 'bp_core_fetch_avatar_no_grav', '__return_true' );
01.01.2016
  • я только немного поиграл с вашим ответом, но, похоже, он заключает URL-адрес в тег img и классы, а не только URL-адрес. 02.01.2016
  • Привет, Кейл, я остановился на '‹?php echo get_avatar(get_the_author_meta('ID'), 180); ?›' Это портит мой html и css, но с этим мне придется смириться, если только я не захочу пойти по пути preg. 02.01.2016
  • Я обновил ответ как для вашего конкретного использования, так и для полной документации по этой функции. 02.01.2016
  • Разве функция здесь не дала вам только URL-адрес? Я немного смущен. 02.01.2016
  • Красиво получилось! Большое спасибо Кале! Я добавил ответ, чтобы показать вам, как я его использовал, не стесняйтесь включать его в свой ответ, если что-то из этого полезно. Я удалю свой ответ позже сегодня. 02.01.2016
  • И чтобы уточнить, да, он получил только URL-адрес, именно то, что мне было нужно. Трюк, кажется, в html => false, как вы ясно объяснили. 02.01.2016

  • 2

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

    в цикле (скажем, 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
        ) 
        ); 
    }
    
    02.01.2016
    Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]