Как сменить выводимый аватар для указанного E-mail в WordPress
Рад видеть не сайте, уважаемый пользователь!
WordPress для вывода картинок, представляющих посетителя, использует сервис Gravatar (по-русски – граватар). А этот сервис, в свою очередь, определяет, какую картинку выводить исходя из введённого адреса электронной почты.
И всё бы хорошо, но большинство посетителей никогда не пользовались сервисом Gravatar и, соответственно, не устанавливали там картинку-аватарку. А это значит, что для таких пользователей будет выводиться картинка-аватарка по умолчанию.
Или другая ситуация – установленная картинка-аватарка у конкретного посетителя слишком вызывающая, которая отображается у его комментариев и может смущать других посетителей сайта. И в этой связи было бы неплохо её изменить. Сам посетитель этого, естественно, делать не будет.
И в подобных ситуациях бывает необходимо задать показ конкретной картинки для пользователя с тем или иным адресом электронной почты. И в WordPress эту возможность можно реализовать.
Устанавливаем показ желаемого аватара у посетителя с конкретным адресом электронной почты
Мы не будем пользоваться плагином, а реализуем задачу с помощью непосредственно вписывания кода в файл functions.php.
Вот данный код:
add_filter( 'pre_get_avatar_data', 'custom_pre_get_avatar_data', 10, 2 ); function custom_pre_get_avatar_data( $args, $id_or_email ) { if ( is_numeric( $id_or_email ) ) { $user = get_user_by( 'id', $id_or_email ); } elseif ( $id_or_email instanceof WP_Comment ) { $email = $id_or_email->comment_author_email; $user = get_user_by( 'id', $id_or_email->user_id ); } elseif ( $id_or_email instanceof WP_Post ) { $user = get_user_by( 'id', $id_or_email->post_author ); } elseif ( $id_or_email instanceof WP_User ) { $user = get_user_by( 'id', $id_or_email->ID ); } else { $user = get_user_by( 'email', $id_or_email ); } if ( empty( $email ) && $user && ! is_wp_error( $user ) ) { $email = $user->user_email; } if ( ! empty( $email ) && preg_match( '/^sample@gmail\.com$/', $email ) ) { $args['url'] = 'http://yourwebsite.com/avatar.jpg'; } if ( ! empty( $email ) && preg_match( '/^somename@yahoo\.com$/', $email ) ) { $args['url'] = 'http://yourwebsite.com/avatar-two.jpg'; } return $args; }
Здесь в качестве примера присвоение картинки осуществляется для посетителя с адресом электронной почты sample@gmail.com, а также somename@yahoo.com.
Ссылка на картинку, как вы уже, наверное, поняли, задаётся в строке, начинающейся с $args['url'].
Основываясь на этом коде, вы сможете добавить неограниченное количество других адресов электронной почты, задать выводимый аватар в каждом конкретном случае.
Вот так, без использования какого-либо плагина, реализовывается в WordPress смена выводимой картинки-аватарки для посетителя с конкретным адресом электронной почты.