WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

get_avatar() WP 2.5.0

Получает html код аватара (<img>) комментатора, если пользователь авторизирован или указал email при комментировании. Обычно используется в разделе комментариев.

Используется внутри Цикла комментариев или обязательно нужно передать первый параметр!

Используйте фильтр get_avatar, когда нужно изменить результат функции.

Это pluggable функция — т.е. её можно заменить из плагина. Это значит, что она будет работать (подключается) только после подключения всех плагинов, а до этого момента функция еще не определена... Поэтому нельзя вызывать эту и зависящие от неё функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded или позднее, например хук init.

Замена функции (переопределение) — в плагине можно создать функцию с таким же названием, тогда она заменит текущую функцию.

Работает на основе: get_avatar_url(), get_avatar_data()
✈ 1 раз = 0.000196с = быстро | 50000 раз = 4.98с = быстро | PHP 7.1.0, WP 4.7.1
Хуки из функции
Возвращает

Строку/false. HTML тег <img>. false если не удалось отправить запрос. Если нет аватара, но запрос отправился, то вернет аватарку по дефолту - не false.

Использование

<?php echo get_avatar( $id_or_email, $size, $default, $alt, $args ); ?>
$id_or_email(строка/объект/число) (обязательный)

ID или email юзера, для которого нужно получить аватар. Также можно указать объекты: WP_User, WP_Post, WP_Comment или md5 хэш gravatar.

В большинстве шаблонов в этом параметре можно указать глобальную переменную $comment. Если функция не работает (вызывает ошибку), то запишите в неё email комментатора, делается это так:

get_the_author_meta('email@gmail.com');
$size(число)
Размер картинки. Указанное число станет шириной и высотой в пикселях.
По умолчанию: 96
$default(строка)

УРЛ на картинку по умолчанию, для пользователей, которые не имеют аватарки в сервисе gravatar.

Также принимает:

  • 404 - вернет 404 вместо дефолтной картинки.
  • retro - пиксельная картинка 8bit:
  • monsterid - монстрик:
  • wavatar - мульт лицо:
  • indenticon - картинка-узор:
  • mystery, 'mm' или 'mysterman' - неизвестный человек:
  • blank - прозрачная GIF картинка.
  • gravatar_default - логотип Gravatar:

По умолчанию: '' (значение опции 'avatar_default' или 'mystery')

$alt(строка)
Текст для атрибута 'alt' тега <img>.
По умолчанию: ''
$args(массив)

Дополнительные аргументы для получения аватара:

  • height - Число. Высота в пикселях. По умолчанию $size.
  • width - Число. Ширина в пикселях. По умолчанию $size.
  • force_default - Логический. Всегда показывать дефолтную картинку и никогда аватар.
  • rating - Строка. Минимальный рейтинг аватара для отображения. Может быть: 'G', 'PG', 'R', 'X'. По умолчанию значение опции 'avatar_rating'.
  • scheme - Строка. Схема URL которая будет использоваться. Смотрите set_url_scheme().
  • class - Массив/строка. Дополнительные классы для тега img.
  • force_display - Логический. Всегда показывать аватар? Игнорирует опцию show_avatars.
  • extra_attr - Строка. Дополнительные HTML атрибуты для тега IMG. Не очищаются перед выводом на экран.

По умолчанию: null

Примеры

#1. Выведем Аватар текущего комментатора:

<?php echo get_avatar( $comment, 32 ); ?>

Получим:

<img alt='' src='http://0.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536?s=32' class='avatar avatar-32 photo avatar-default' height='32' width='32' />

#2 Вывод аватара автора текущего поста

<?php echo get_avatar( get_the_author_meta('user_email'), 32 ); ?>

#3 Добавление атрибута stylе

Параметр 'extra_attr' позволяет добавлять любые атрибуты тега IMG:

<?php echo get_avatar( $current_user->user_email, 30, '', '', array('class'=>'pull-left', 'extra_attr'=>'style="margin: -4px 7px;"') ); ?>

Получим:

<img alt="" src="http://1.gravatar.com/avatar/155e695ab2987ee3c482c1e3e690683b?s=30&d=mm&r=g" 
	class="avatar avatar-30 photo pull-left" 
	height="30" width="30" 
	style="margin: -4px 7px;"
>

#4 Вариант аватарки по умолчанию в настройки обсуждения

Это код добавления еще одной картинки (опции) в настройках обсуждения, которую можно выбрать как аватарку по умолчанию. Такая аватарка хранится в опции get_option('avatar_default').

## Добавляет еще один вариант аватарки по умолчанию в настройки обсуждения
## Файл аватарки 'def-avatar.jpg' нужно залить в папку темы 'img'
add_filter( 'avatar_defaults', 'add_default_avatar_option' );
function add_default_avatar_option( $avatars ){
	$url = get_stylesheet_directory_uri() . '/img/def-avatar.jpg';
	$avatars[ $url ] = 'Аватар сайта';
	return $avatars;
}

В результате получим такую дополнительную опцию:

#5 Аватар по умолчанию

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

Этот вариант устанавливает аватар по умолчанию «налету», для функций: get_avatar_url() и get_avatar_data(). Дефолтный аватар будет установлен только если в функции не указан дефолтный аватар, т.е. не установлен параметр 'default'.

## Устанавливает аватар по умолчанию
## Файл аватарки 'def-avatar.jpg' нужно залить в папку темы 'img'
add_filter( 'pre_get_avatar_data', 'replace_default_avatar' );
function replace_default_avatar( $args ){
	// админка и страница обсуждения, где настраивается ава по умолчанию...
	// if( is_admin() && get_current_screen()->base === 'options-discussion' ) return $args;

	static $defava; if( $defava === null ) $defava = get_option( 'avatar_default', 'mystery' ); // ускоримся

	// Если используется ава по умолчанию, чтобы работал параметр 'default' если он установлен для функций аватарок
	if( ! $args['default'] || $defava == $args['default'] ){
		$args['default'] = get_stylesheet_directory_uri() . '/img/def-avatar.jpg';
	}

	return $args;
}

Список изменений

С версии 2.5.0 Введена.
С версии 4.2.0 Optional $args parameter added.

Код get avatar: wp-includes/pluggable.php WP 5.2.4

<?php
function get_avatar( $id_or_email, $size = 96, $default = '', $alt = '', $args = null ) {
	$defaults = array(
		// get_avatar_data() args.
		'size'          => 96,
		'height'        => null,
		'width'         => null,
		'default'       => get_option( 'avatar_default', 'mystery' ),
		'force_default' => false,
		'rating'        => get_option( 'avatar_rating' ),
		'scheme'        => null,
		'alt'           => '',
		'class'         => null,
		'force_display' => false,
		'extra_attr'    => '',
	);

	if ( empty( $args ) ) {
		$args = array();
	}

	$args['size']    = (int) $size;
	$args['default'] = $default;
	$args['alt']     = $alt;

	$args = wp_parse_args( $args, $defaults );

	if ( empty( $args['height'] ) ) {
		$args['height'] = $args['size'];
	}
	if ( empty( $args['width'] ) ) {
		$args['width'] = $args['size'];
	}

	if ( is_object( $id_or_email ) && isset( $id_or_email->comment_ID ) ) {
		$id_or_email = get_comment( $id_or_email );
	}

	/**
	 * Filters whether to retrieve the avatar URL early.
	 *
	 * Passing a non-null value will effectively short-circuit get_avatar(), passing
	 * the value through the {@see 'get_avatar'} filter and returning early.
	 *
	 * @since 4.2.0
	 *
	 * @param string $avatar      HTML for the user's avatar. Default null.
	 * @param mixed  $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
	 *                            user email, WP_User object, WP_Post object, or WP_Comment object.
	 * @param array  $args        Arguments passed to get_avatar_url(), after processing.
	 */
	$avatar = apply_filters( 'pre_get_avatar', null, $id_or_email, $args );

	if ( ! is_null( $avatar ) ) {
		/** This filter is documented in wp-includes/pluggable.php */
		return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args );
	}

	if ( ! $args['force_display'] && ! get_option( 'show_avatars' ) ) {
		return false;
	}

	$url2x = get_avatar_url( $id_or_email, array_merge( $args, array( 'size' => $args['size'] * 2 ) ) );

	$args = get_avatar_data( $id_or_email, $args );

	$url = $args['url'];

	if ( ! $url || is_wp_error( $url ) ) {
		return false;
	}

	$class = array( 'avatar', 'avatar-' . (int) $args['size'], 'photo' );

	if ( ! $args['found_avatar'] || $args['force_default'] ) {
		$class[] = 'avatar-default';
	}

	if ( $args['class'] ) {
		if ( is_array( $args['class'] ) ) {
			$class = array_merge( $class, $args['class'] );
		} else {
			$class[] = $args['class'];
		}
	}

	$avatar = sprintf(
		"<img alt='%s' src='%s' srcset='%s' class='%s' height='%d' width='%d' %s/>",
		esc_attr( $args['alt'] ),
		esc_url( $url ),
		esc_url( $url2x ) . ' 2x',
		esc_attr( join( ' ', $class ) ),
		(int) $args['height'],
		(int) $args['width'],
		$args['extra_attr']
	);

	/**
	 * Filters the avatar to retrieve.
	 *
	 * @since 2.5.0
	 * @since 4.2.0 The `$args` parameter was added.
	 *
	 * @param string $avatar      &lt;img&gt; tag for the user's avatar.
	 * @param mixed  $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
	 *                            user email, WP_User object, WP_Post object, or WP_Comment object.
	 * @param int    $size        Square avatar width and height in pixels to retrieve.
	 * @param string $default     URL for the default image or a default type. Accepts '404', 'retro', 'monsterid',
	 *                            'wavatar', 'indenticon','mystery' (or 'mm', or 'mysteryman'), 'blank', or 'gravatar_default'.
	 *                            Default is the value of the 'avatar_default' option, with a fallback of 'mystery'.
	 * @param string $alt         Alternative text to use in the avatar image tag. Default empty.
	 * @param array  $args        Arguments passed to get_avatar_data(), after processing.
	 */
	return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args );
}

Cвязанные функции

Из метки: avatar (аватар)

Еще из раздела: Комментарии

Еще из тегов шаблона: Комментарии

28 комментов
Полезные 5 Все
  • <?php echo get_avatar( get_the_author_meta('user_email'), 32 ); ?>

    странно, данный код выводит аватар правильную

    а вот этот код:

     echo get_avatar( $author_id, 100, '', esc_html__( 'avatar', 'theme' ), array('extra_attr' => 'itemprop="image"') );

    выводит стандартную аву

    1
    Ответить1.2 года назад #
    • Kama7631

      Сча проверил оба варианта выводят мою аву... Может у тебя плагин какой или код что-то меняет в аватарах?

      1
      Ответить1.2 года назад #
  • @ Deep geeky.gq

    THANK YOU SO MUCH BUDDY

    1
    Ответить13 дней назад #
Здравствуйте, !     Войти . Зарегистрироваться