WordPress как на ладони

get_avatar()WP 2.5.0

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

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

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

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

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

Работает на основе: 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.

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

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

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

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

get_avatar( '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. Не очищаются перед выводом на экран.
  • loading — Строка lazy.

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

Примеры

0

#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' />
0

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

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

#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;"
>
0

#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;
}

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

0

#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 Added the optional $args parameter.
С версии 5.5.0 Added the loading argument.
С версии 6.1.0 Added the decoding argument.
С версии 6.3.0 Added the fetchpriority argument.

Код get_avatar() WP 6.6.2

function get_avatar( $id_or_email, $size = 96, $default_value = '', $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,
		'loading'       => null,
		'fetchpriority' => null,
		'decoding'      => null,
		'extra_attr'    => '',
	);

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

	$args['size']    = (int) $size;
	$args['default'] = $default_value;
	$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'];
	}

	// Update args with loading optimized attributes.
	$loading_optimization_attr = wp_get_loading_optimization_attributes( 'img', $args, 'get_avatar' );

	$args = array_merge( $args, $loading_optimization_attr );

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

	/**
	 * Allows the HTML for a user's avatar to be returned early.
	 *
	 * Returning 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|null $avatar      HTML for the user's avatar. Default null.
	 * @param mixed       $id_or_email The avatar 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'];
		}
	}

	// Add `loading`, `fetchpriority`, and `decoding` attributes.
	$extra_attr = $args['extra_attr'];

	if ( in_array( $args['loading'], array( 'lazy', 'eager' ), true )
		&& ! preg_match( '/\bloading\s*=/', $extra_attr )
	) {
		if ( ! empty( $extra_attr ) ) {
			$extra_attr .= ' ';
		}

		$extra_attr .= "loading='{$args['loading']}'";
	}

	if ( in_array( $args['fetchpriority'], array( 'high', 'low', 'auto' ), true )
		&& ! preg_match( '/\bfetchpriority\s*=/', $extra_attr )
	) {
		if ( ! empty( $extra_attr ) ) {
			$extra_attr .= ' ';
		}

		$extra_attr .= "fetchpriority='{$args['fetchpriority']}'";
	}

	if ( in_array( $args['decoding'], array( 'async', 'sync', 'auto' ), true )
		&& ! preg_match( '/\bdecoding\s*=/', $extra_attr )
	) {
		if ( ! empty( $extra_attr ) ) {
			$extra_attr .= ' ';
		}

		$extra_attr .= "decoding='{$args['decoding']}'";
	}

	$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( implode( ' ', $class ) ),
		(int) $args['height'],
		(int) $args['width'],
		$extra_attr
	);

	/**
	 * Filters the HTML for a user's avatar.
	 *
	 * @since 2.5.0
	 * @since 4.2.0 Added the `$args` parameter.
	 *
	 * @param string $avatar        HTML for the user's avatar.
	 * @param mixed  $id_or_email   The avatar to retrieve. Accepts a user ID, Gravatar MD5 hash,
	 *                              user email, WP_User object, WP_Post object, or WP_Comment object.
	 * @param int    $size          Height and width of the avatar in pixels.
	 * @param string $default_value URL for the default image or a default type. Accepts:
	 *                              - '404' (return a 404 instead of a default image)
	 *                              - 'retro' (a 8-bit arcade-style pixelated face)
	 *                              - 'robohash' (a robot)
	 *                              - 'monsterid' (a monster)
	 *                              - 'wavatar' (a cartoon face)
	 *                              - 'identicon' (the "quilt", a geometric pattern)
	 *                              - 'mystery', 'mm', or 'mysteryman' (The Oyster Man)
	 *                              - 'blank' (transparent GIF)
	 *                              - 'gravatar_default' (the Gravatar logo)
	 * @param string $alt           Alternative text to use in the avatar image tag.
	 * @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 );
}
26 комментариев
Полезные 5 Все
    Войти