- Вопрос или проблема
- Добавить параметры для бэкенда
- удалить рендеринг gravatar по умолчанию в списке комментариев бэкенда
- рендеринг пользовательского gravatar для списка комментариев бэкенда
- Ответ или решение
- Как добавить изображение профиля автора комментария для незарегистрированных пользователей в WordPress
- 1. Добавление настроек в панель управления WordPress
- 2. Удаление стандартного аватара из списка комментариев на бэкенде
- 3. Отображение кастомного аватара в списке комментариев
- Принцип работы
- Заключение
Вопрос или проблема
У меня есть настраиваемая форма комментариев, и любой может добавлять комментарии без создания аккаунта. Теперь я хочу установить изображение автора комментария для каждого комментария. Я не смог найти никакой функции или поддержки для этого, так как в основном поддержка предоставляется зарегистрированным пользователям. Но я также позволяю незарегистрированным пользователям добавлять комментарии. Есть ли способ это сделать?
Мне это также интересно, и, потратив часы на тестирование, изучение исходного кода и некоторых онлайн-документов, я наконец понял, как это работает. В итоге метод простой, но неочевидный.
Не уверен, как вы добавляете изображение, возможно, вам нужно изменить код в соответствии с вашей ситуацией, и вот способ WordPress для добавления пользовательского Gravatar. В примере используется фиктивный элемент-заполнитель, который вы можете заменить на свой собственный gravatar.
Иконки аватаров в WP в основном получаются с gravatar.com.
Добавить параметры для бэкенда
// способ WordPress добавить аватар для незарегистрированного пользователя/анонима
// добавьте параметры в настройки -> обсуждение
add_filter( 'avatar_defaults' , 'ws366726_avatar_defaults' );
function ws366726_avatar_defaults($avatar_defaults) {
// вы можете получить мета-опцию для изображения
// ключ - это путь к изображению для Gravatar на основе http://en.gravatar.com/site/implement/images/
// этот ключ будет загружен по умолчанию, если изображение не найдено для конкретного пользователя в базе данных Gravatar на основе поиска по электронной почте
// здесь вы можете изменить на свое изображение, сохраненное в метаданных
$avatar_defaults['https://via.placeholder.com/64'] = 'Мой по умолчанию';
return $avatar_defaults;
}
Изображение Gravatar:
http://2.gravatar.com/avatar/52b752660072401e4a971105206d44a0?s=32&d=mm&f=y&r=g, где mm – это Таинственный Человек
Пример пользовательского изображения, изменяя параметр в d:
http://2.gravatar.com/avatar/52b752660072401e4a971105206d44a0?s=32&d=https://via.placeholder.com/32?ssl=1&f=y&r=g
Вот как WordPress получает изображение по умолчанию для gravatar.
удалить рендеринг gravatar по умолчанию в списке комментариев бэкенда
// в хуке 'admin_bar_menu' будет доступен 'автор комментария' для удаления
add_action ('admin_bar_menu' , 'ws366726_remove_default_avatar_in_comment_list');
function ws366726_remove_default_avatar_in_comment_list() {
global $wp_filter;
// потому что 'comment_author' по умолчанию определён внутри класса, нужно его найти и использовать remove_filter
foreach ($wp_filter['comment_author'][10] as $key => $value) {
if( preg_match('#floated_admin_avatar#', $key) ) {
remove_filter( 'comment_author', array( $wp_filter['comment_author'][10][$key]['function'][0],'floated_admin_avatar' ), 10, 2);
}
}
}
рендеринг пользовательского gravatar для списка комментариев бэкенда
add_filter( 'comment_author' , 'ws366726_comment_author', 11, 2 );
function ws366726_comment_author( $name ) {
// отображать вместо этого параметры по умолчанию, я думаю, что команда разработчиков может реализовать это вместо жестко закодированного 'mystery' в будущем, чтобы разработчикам не приходилось удалять и добавлять обратно подобные вещи
$default = get_option( 'avatar_default', 'mystery' ); // загрузить сохранённое значение по умолчанию в БД, по умолчанию - это mystery
$avatar = get_avatar( get_comment(), 32, $default );
return "$avatar $name";
}
Этот способ добавления Аватара позволяет вам контролировать аватар по умолчанию в том же меню параметров настройки -> обсуждение. Таким образом, сохраняется оригинальная гибкость.
Основная идея заключается в том, что gravatar подготавливается функцией get_avatar()
, которая по умолчанию получает опцию анонимного аватара из опции с помощью get_option( 'avatar_default', 'mystery' )
, которая предоставляет mystery
как значение по умолчанию, если не было сохранено ранее.
Ключ key
mystery – это то, где искать изображение, когда создаётся URL для ссылки на gravatar.com. Согласно этой статье, это может быть пользовательский URL для загрузки как значения по умолчанию.
Ответ или решение
Как добавить изображение профиля автора комментария для незарегистрированных пользователей в WordPress
Ваша задача состоит в том, чтобы предоставить возможность незарегистрированным пользователям загружать комментарии с добавлением изображения профиля (аватара). WordPress по умолчанию поддерживает аватары только для зарегистрированных пользователей через сервис Gravatar. Тем не менее, вы можете реализовать кастомное решение для отображения аватаров на основе настраиваемых параметров. Ниже представлены шаги и код для достижения этой цели.
1. Добавление настроек в панель управления WordPress
Чтобы обеспечить возможность загрузки кастомных аватаров, сначала добавьте новый пункт в настройки WordPress, который позволит вам выбирать изображение по умолчанию для незарегистрированных пользователей.
// Добавление опции по умолчанию для аватаров в настройках - > обсуждение
add_filter('avatar_defaults', 'ws366726_avatar_defaults');
function ws366726_avatar_defaults($avatar_defaults) {
// Укажите URL вашего изображения, которое будет использоваться в качестве аватара по умолчанию
$avatar_defaults['https://via.placeholder.com/64'] = 'Мой аватар по умолчанию';
return $avatar_defaults;
}
Это позволит вам добавлять свой собственный аватар, который будет отображаться для пользователей, не имеющих зарегистрированной учетной записи.
2. Удаление стандартного аватара из списка комментариев на бэкенде
Чтобы убрать стандартный аватар из списка комментариев в административной части панели управления, необходимо использовать следующий код:
// Удаление стандартного аватара из списка комментариев
add_action('admin_bar_menu', 'ws366726_remove_default_avatar_in_comment_list');
function ws366726_remove_default_avatar_in_comment_list() {
global $wp_filter;
// Поиск и удаление стандартного аватара из фильтра
foreach ($wp_filter['comment_author'][10] as $key => $value) {
if (preg_match('#floated_admin_avatar#', $key)) {
remove_filter('comment_author', array($wp_filter['comment_author'][10][$key]['function'][0], 'floated_admin_avatar'), 10, 2);
}
}
}
3. Отображение кастомного аватара в списке комментариев
Следующий шаг — настроить отображение вашего кастомного аватара в списке комментариев:
// Отображение кастомного аватара для комментариев
add_filter('comment_author', 'ws366726_comment_author', 11, 2);
function ws366726_comment_author($name) {
// Получаем платформу по умолчанию для аватара из настроек
$default = get_option('avatar_default', 'mystery');
// Получаем аватар для комментария
$avatar = get_avatar(get_comment(), 32, $default);
return "$avatar $name";
}
Принцип работы
-
Фильтрация аватаров: Используя функцию
get_avatar()
, WordPress ищет изображение профиля для пользователя. Если пользователя нет в базе данных Gravatar, система использует изображение по умолчанию, которое вы определили. -
Настройки: Вы можете изменять и обновлять параметры по умолчанию через панель управления WordPress (Настройки -> Обсуждение), что дает гибкость в управлении аватарами.
-
Опции аватара: Вы можете использовать собственные URL-адреса изображений или изображения из внешних источников, включая CDN или локальные ресурсы вашего сайта.
Заключение
Внедряя данные изменения, вы сможете предоставить пользователям возможность добавления изображений профиля при комментировании, что сделает ваш сайт более привлекательным и интерактивным. Не забывайте тестировать все изменения на локальной среде перед развертыванием на рабочем сайте, чтобы избежать возможных конфликтов и ошибок.