Как сменить выводимый аватар для указанного E-mail в WordPress

Image

Рад видеть не сайте, уважаемый пользователь!

WordPress для вывода картинок, представляющих посетителя, использует сервис Gravatar (по-русски – граватар). А этот сервис, в свою очередь, определяет, какую картинку выводить исходя из введённого адреса электронной почты.

И всё бы хорошо, но большинство посетителей никогда не пользовались сервисом Gravatar и, соответственно, не устанавливали там картинку-аватарку. А это значит, что для таких пользователей будет выводиться картинка-аватарка по умолчанию.

Или другая ситуация – установленная картинка-аватарка у конкретного посетителя слишком вызывающая, которая отображается у его комментариев и может смущать других посетителей сайта. И в этой связи было бы неплохо её изменить. Сам посетитель этого, естественно, делать не будет.

Меняем отображаемый аватар конкретного комментатора в WordPress

И в подобных ситуациях бывает необходимо задать показ конкретной картинки для пользователя с тем или иным адресом электронной почты. И в 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 смена выводимой картинки-аватарки для посетителя с конкретным адресом электронной почты.

Пожертвование сайту WPuse.ru (cбор пожертвований осуществляется через сервис «ЮMoney»)