Реализация пользовательских аватаров в WordPress не добавляет оптимизма.
Попробуем разнообразить пользовательские аватары.
Традиционно WordPress предлагает несколько способов добавления пользовательских аватарок:
- С помощью сторонних сервисов типа Gravatar
- Установить рандомную аватарку из своей коллекции с помощью плагинов
- Использовать безликий серый Noname аватар
- Вообще не использовать аватары пользователей на сайте
Все эти способы довольно скучны и не добавляют интереса к комментариям.
Заинтересовавшись темой я решил как-то упорядочить найденные способы добавления пользовательских рандомных аватарок для WordPress.
И здесь есть 2 пути решения задачи:
Добавление пользовательских аватаров с помощью плагина
Здесь все просто: скачиваем первый попавшийся плагин для пользовательских аватаров, тестируем, включаем или удаляем как непригодный.
В случае применения плагина появляется аспект безопасности. Совсем не радует, когда пользователь может что-то закачивать на сайт даже если это вполне безопасное изображение.
Мне понравился плагин Аvatar Manager
Довольно простой плагин с минимумом настроек. Позволяет загружать аватары, умеет ограничивать пользователей по уровню доступа.
Настройки плагина Аvatar Manager находятся в разделе настроек WordPress -> Обсуждение.
Но плагин полностью исключает возможность использования сторонних сервисов типа Gravatar, так что совместить собственные аватарки со сторонними не получится.
Возможно есть и другие плагины, позволяющие это сделать, но на мой взгляд есть более интересные решения.
Добавление пользовательских аватаров с помощью кода
Мне попалось несколько хуков для решения этой задачи (ссылки в конце поста), разной степени глючности и работоспособности.
В итоге я взял известный хук chameleon_default_avatar() и немного его подправил следующим образом:
//добавляем рандомные аватары юзеров
add_filter( 'pre_option_avatar_default', 'chameleon_default_avatar' );
function chameleon_default_avatar ( $value )
{
return get_template_directory_uri() . '/avatar/'.rand( 1 , 300 ).'.jpg';
}
Пошаговая инструкция к добавлению кода пользовательских аватаров:
- Скачиваем пак аватаров, например отсюда, или рисуем свои
- Создаем папку "avatar" в папке дочерней темы WordPress
- Закачиваем аватары в эту папку
- В консоли WordPress, заходим в раздел "Редактор тем" и открываем на редактирование файл function.php и в самом конце перед закрывающим ?> вставляем вышеуказанный код. Сохраняем файл.
В итоге комментаторы и пользователи, которые не имеют аватарок на Gravatar получат постоянно обновляющиеся аватары.
Важный момент!
Пользовательские аватары должны именоваться от 1.jpg до 300.jpg. Если у вас аватаров меньше или больше то в коде заменяем фрагмент rand( 1 , 300 ) на то количество аватаров, которое у вас есть на самом деле. Например если у вас 50 аватаров фрагмент должен быть таким : rand( 1 , 50 ).
Можно и не использовать дочернюю тему и сделать все в обычной, но тогда при следующем обновлении все наши изменения исчезнут.
Источники:
Статья о хуке с аватаром (англ)
Автор использует функцию admin_url() и добавляет аватары в директорию wp_admin/images/cham_avatars folder что приводит к тому, что при обновлении WordPress удаляется директория с аватарами. В целом рабочее решение.
Еще один вариант с аналогичным хуком (англ)
Наш украинский коллега предлагает такое решение.
На мой взгляд этот хук требует доработки. Логичнее было бы поместить директорию /avatar/ c пользовательскими аватарами в папку /wp-content/uploads/ и получать URL изображения через функцию wp_get_upload_dir() или wp_upload_dir()
Впрочем предложенный вариант тоже вполне работоспособен и применен.
Удачи!
Об авторе