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

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 комментатора, для которого нужно получить аватар.

Можно указать объект содержащий данные комментария.

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

$comment = get_the_author_meta('user_email');

По умолчанию: нет

$size(число)
Размер картинки. Указанное число станет шириной и высотой в пикселях.
По умолчанию: 96
$default(строка)
УРЛ на картинку по умолчанию, для пользователей, которые не имеют аватарки в сервисе gravatar.
По умолчанию: нет
$alt(строка)
Текст для атрибута ссылки 'alt'.
По умолчанию: ''
$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;
}

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

optsiya-avatarka-po-umolchaniyu

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

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

Этот вариант устанавливает аватар по умолчанию «налету», для всех функций: get_avatar(), 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;
}

Код get avatar: wp-includes/pluggable.php VER 4.9.1

<?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 (аватар)

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

get_avatar 31 комментарий
Полезные 5 Все
  • Devvver cайт: devvver.ru

    Столкнулся с проблемой из-за этой функции. Она грузит картинку с http, как поменять на https:// ?

    Ответить3 месяца назад #

Здравствуйте, !

Ваш комментарий