get_avatar

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

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

Если нужно воздействовать на эту функцию, то используйте фильтр get_avatar.

Эту функцию можно переопределить в плагине.
✈ 1 раз = 0.000196с = быстро | 50000 раз = 4.98с = быстро PHP 7.1.0, WP 4.7.1
Хуки из функции:
get_avatar
pre_get_avatar
Возвращает

Строку/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:

## Добавляет еще один вариант аватарки по умолчанию в настройки обсуждения
## Файл аватарки '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;
}

Код из


wp-includes/pluggable.php

WP 4.7.2

<?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_attr( "$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 $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 );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *