Что я должен сделать, чтобы сделать созданные аватары разными для анонимных комментариев?

Все комментарии на моем сайте анонимны и без регистрации. Чтобы оставить комментарий, вы должны заполнить имя поля (не обязательно) и текст вашего комментария (обязательно).

У меня проблема с аватарами. Все они генерируются одинаково.

Что делать, чтобы сделать их разными?

Существует два способа настройки аватара по умолчанию:

  1. Добавьте новый аватар по умолчанию в Настройки / Обсуждение .
  2. Измените вывод get_avatar() .

Начнем с первого варианта; это происходит немного быстрее.

Добавить новый аватар по умолчанию в Настройки / Обсуждение

Существует фильтр 'avatar_defaults' . Здесь вы можете добавить больше аватаров.
Вы получаете массив изображений по умолчанию, где ключ является URL-адресом, а значение – видимым.

Образец кода

 add_filter( 'avatar_defaults', 'wpse_58373_kitten_avatar' ); /** * Add a new default avatar. * * @param array $avatar_defaults Key = URL, Value = Visible name. * @return array */ function wpse_58373_kitten_avatar( $avatar_defaults ) { $avatar_defaults['http://placekitten.com/32/32'] = 'Kitty'; return $avatar_defaults; } 

результат

введите описание изображения здесь

Измените вывод get_avatar() .

get_avatar() ищет параметр с именем 'avatar_default' . Мы можем подключиться к 'pre_option_avatar_default' и вернуть пользовательский (случайный) URL-адрес.

Образец кода

 add_filter( 'pre_option_avatar_default', 'wpse_58373_custom_default_avatar'); /** * Return a random image URL */ function wpse_58373_custom_default_avatar() { /* We use images from WP here, you should change this and put some default * images into your theme or plugin directory. */ $base_url = admin_url( 'images' ) . '/'; $images = array ( 'wp-logo-vs.png', 'wpspin_dark.gif', 'yes.png' ); $rand = rand( 0, ( count( $images ) - 1 ) ); return $base_url . $images[ $rand ]; } 

результат

введите описание изображения здесь

Как вы можете видеть – вы должны вернуть изображение с размером, соответствующим размеру аватара вашей темы. 🙂

Re: генерация случайных аватаров, это был чрезвычайно полезный ответ и работал с одним незначительным изменением – для функции, о которой идет речь, нужен аргумент. Без аргумента возвращаемый код включал jumble html, который включал как желаемый URL-адрес изображения, так и URL-адрес значка по умолчанию от гравитатора. Я изменил это:

wpse_58373_custom_default_avatar ()

к этому:

 wpse_58373_custom_default_avatar($value) 

и это, казалось, генерировало URL-адрес изображения без беспорядка. Для удобства использования конечный код с добавлением get_template_directory_uri () для целевой темы, а не для папки администратора, а некоторые сбрасывающие переменные:

 // Random Avatar add_filter( 'pre_option_avatar_default', 'mind_bullets_default_avatar' ); function mind_bullets_default_avatar ( $value ) { $tix_array = array ( 'Amer_Cyborg.jpg', 'Die_hard_3.jpg', 'Thing.jpg' ); // Include randomizer in url generator return get_template_directory_uri().'/images/Avatars/'.$tix_array [rand( 0, ( count( $tix_array ) - 1 ) )]; } 

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

Чтобы добавить к уже сказанному, я предлагаю использовать «фрагменты кода» плагина,

Таким образом, ваши изменения во внутренних словах WordPress не будут сталкиваться с обновлениями, и вы можете фактически управлять ими (активировать, деактивировать, экспортировать их …)

Я создал небольшое учебное пособие для создания пользовательских случайных аватаров, используя информацию из этого вопроса и фрагменты кода

сборник случайных аватаров

Вот как это выглядит

example_random_avatars

Код, который я использовал, довольно прост

 // Random Chameleon Avatar add_filter( 'pre_option_avatar_default', 'chameleon_default_avatar' ); function chameleon_default_avatar ( $value ) { return admin_url( 'images' ) . '/cham_avatars/cham_avatar'.rand( 0 , 13 ).'.jpg'; }