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

get_avatar_data() WP 4.2.0

Получает массив данных об аватаре, по переданному email, ID, объекту пользователя, объекту поста или комментария.

Ищем WP-разработчика! Фулл-тайм, удаленка, хорошая зарплата, соц. пакет. Подробности.
Компания Boosta.

Эта функция не проверят если ли реально аватар, она просто собирает URL на сервис gravatar.com. Чтобы проверить если ли у email аватар, вам нужно отдельно обработать полученный URL. Нужно указать в default 404, затем получить URL и попробовать получить картинку по этому URL через get_headers(). Если ответ вернет 404, то аватарки у email нет.

Смотрите также функцию get_avatar().

Основа для: get_avatar_url(), get_avatar()

Возвращает

Массив. Массив данных полученного аватара. Массив будет содержать все переданные в параметр $args данные а также дополнительные поля:

  • 'found_avatar' - (логический) true - если аватар пользователя найден, false или пусто - если не найден.

  • 'url' - (строка) УРЛ найденного аватара.

Возвращаемый параметр 'found_avatar' определен всегда, когда удалось получить картинку аватара, даже если параметр default=404. 'found_avatar' не указывает на то, есть ли у пользователя реальный аватар.

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

get_avatar_data( $id_or_email, $args );
$id_or_email(смешанный) (обязательный)

Идентификатор по которому будет определяться аватар. Может быть:

  • email - asd@asd.ru
  • gravatar md5 хэш (md5 хэш мыла)
  • ID пользователя - получит аватар пользователя по мылу
  • WP_User объект - получит аватар пользователя по мылу
  • WP_Post объект - получит аватар автора поста
  • WP_Comment объект - получит аватар комментатора
$args(массив)

Параметры получаемого аватара. По умолчанию:

  • size(число)
    Высота и ширина аватара в пикселях.
    По умолчанию: 96
  • default(строка)
    УРЛ на картинку по умолчанию - если не удалось получить аватар. Вместо УРЛ можно указать следующие значения:

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

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

  • force_default(логический)
    Ставим true, если нужно всегда показывать дефолтную картинку и не показывать аватары совсем.
    По умолчанию: false

  • rating(строка)
    Максимально допустимый рейтинг выводимой аватарки. Может быть:

    • G — Подходит для любой аудитории;
    • PG — Может содержать оскорбительные элементы, обычно для аудитории старше 13 лет;
    • R — Рассчитан на взрослую аудиторию старше 17 лет;
    • X — Для ещё более зрелой аудитории;

    По умолчанию: значение опции 'avatar_rating'

  • scheme(строка)
    Схема УРЛ, которая будет использоваться. Может быть: 'http', 'https', 'login', 'login_post', 'admin', or 'relative'. Подробнее смотрите функцию set_url_scheme().
    По умолчанию: null

  • processed_args(массив)
    Дополнительные опции для передачи. При фильтрации и возврате данных функцией get_avatar_data() эти параметры будут добавлены в возвращаемый массив.
    По умолчанию: null

  • extra_attr(строка)
    HTML атрибуты для добавления к элементу IMG. Не очищаются.
    По умолчанию: ''

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

Примеры

#1 Получим данные аватарки по email юзера

$ava_data = get_avatar_data( 'asd@dsf.df', array(
	'size' => 48,
	'default'=>'identicon',
) );

/*
Array
(
	[size] => 48
	[height] => 48
	[width] => 48
	[default] => identicon
	[force_default] => 
	[rating] => g
	[scheme] => 
	[processed_args] => 
	[extra_attr] => 
	[found_avatar] => 1
	[url] => http://1.gravatar.com/avatar/4b508f04b661ba693130539bd29f5c0d?s=48&d=identicon&r=g
)
*/

#2 Получим данные аватара текущего пользователя

$ava_data = get_avatar_data( $GLOBALS['current_user'], array(
	'size' => 24,
	'default'=>'wavatar',
) );

/*
Array
(
	[size] => 24
	[height] => 24
	[width] => 24
	[default] => wavatar
	[force_default] => 
	[rating] => g
	[scheme] => 
	[processed_args] => 
	[extra_attr] => 
	[found_avatar] => 1
	[url] => http://1.gravatar.com/avatar/155e695ab2251ee3c482c1e3e690683b?s=24&d=wavatar&r=g
)
*/

#3 Получим данные аватара автора текущей статьи

global $post;
$ava_data = get_avatar_data( $post, "size=52&default=monsterid");

/*
Array
(
	[size] => 52
	[height] => 52
	[width] => 52
	[default] => monsterid
	[force_default] => 
	[rating] => g
	[scheme] => 
	[processed_args] => 
	[extra_attr] => 
	[found_avatar] => 1
	[url] => http://1.gravatar.com/avatar/155e695ab2251ee3c482c1e3e690683b?s=52&d=monsterid&r=g
)
*/

#4 Передадим дополнительные параметры

$ava_data = get_avatar_data( 'asd@sd.sd', array(
	'processed_args' => array(10,'foo'),
	'extra_attr' => 'style="foo"',
));

print_r( $ava_data );

/*
Array
(
	[size] => 24
	[height] => 24
	[width] => 24
	[default] => mm
	[force_default] => 
	[rating] => x
	[scheme] => 
	[processed_args] => Array
		(
			[0] => 10
			[1] => foo
		)

	[extra_attr] => style="foo"
	[found_avatar] => 1
	[url] => http://1.gravatar.com/avatar/4420889f9734a17a5168dbec7891a4c9?s=24&d=mm&r=x
)
*/

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

С версии 4.2.0 Введена.

Код get_avatar_data() WP 5.8.1

function get_avatar_data( $id_or_email, $args = null ) {
	$args = wp_parse_args(
		$args,
		array(
			'size'           => 96,
			'height'         => null,
			'width'          => null,
			'default'        => get_option( 'avatar_default', 'mystery' ),
			'force_default'  => false,
			'rating'         => get_option( 'avatar_rating' ),
			'scheme'         => null,
			'processed_args' => null, // If used, should be a reference.
			'extra_attr'     => '',
		)
	);

	if ( is_numeric( $args['size'] ) ) {
		$args['size'] = absint( $args['size'] );
		if ( ! $args['size'] ) {
			$args['size'] = 96;
		}
	} else {
		$args['size'] = 96;
	}

	if ( is_numeric( $args['height'] ) ) {
		$args['height'] = absint( $args['height'] );
		if ( ! $args['height'] ) {
			$args['height'] = $args['size'];
		}
	} else {
		$args['height'] = $args['size'];
	}

	if ( is_numeric( $args['width'] ) ) {
		$args['width'] = absint( $args['width'] );
		if ( ! $args['width'] ) {
			$args['width'] = $args['size'];
		}
	} else {
		$args['width'] = $args['size'];
	}

	if ( empty( $args['default'] ) ) {
		$args['default'] = get_option( 'avatar_default', 'mystery' );
	}

	switch ( $args['default'] ) {
		case 'mm':
		case 'mystery':
		case 'mysteryman':
			$args['default'] = 'mm';
			break;
		case 'gravatar_default':
			$args['default'] = false;
			break;
	}

	$args['force_default'] = (bool) $args['force_default'];

	$args['rating'] = strtolower( $args['rating'] );

	$args['found_avatar'] = false;

	/**
	 * Filters whether to retrieve the avatar URL early.
	 *
	 * Passing a non-null value in the 'url' member of the return array will
	 * effectively short circuit get_avatar_data(), passing the value through
	 * the {@see 'get_avatar_data'} filter and returning early.
	 *
	 * @since 4.2.0
	 *
	 * @param array $args        Arguments passed to get_avatar_data(), after processing.
	 * @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.
	 */
	$args = apply_filters( 'pre_get_avatar_data', $args, $id_or_email );

	if ( isset( $args['url'] ) ) {
		/** This filter is documented in wp-includes/link-template.php */
		return apply_filters( 'get_avatar_data', $args, $id_or_email );
	}

	$email_hash = '';
	$user       = false;
	$email      = false;

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

	// Process the user identifier.
	if ( is_numeric( $id_or_email ) ) {
		$user = get_user_by( 'id', absint( $id_or_email ) );
	} elseif ( is_string( $id_or_email ) ) {
		if ( strpos( $id_or_email, '@md5.gravatar.com' ) ) {
			// MD5 hash.
			list( $email_hash ) = explode( '@', $id_or_email );
		} else {
			// Email address.
			$email = $id_or_email;
		}
	} elseif ( $id_or_email instanceof WP_User ) {
		// User object.
		$user = $id_or_email;
	} elseif ( $id_or_email instanceof WP_Post ) {
		// Post object.
		$user = get_user_by( 'id', (int) $id_or_email->post_author );
	} elseif ( $id_or_email instanceof WP_Comment ) {
		if ( ! is_avatar_comment_type( get_comment_type( $id_or_email ) ) ) {
			$args['url'] = false;
			/** This filter is documented in wp-includes/link-template.php */
			return apply_filters( 'get_avatar_data', $args, $id_or_email );
		}

		if ( ! empty( $id_or_email->user_id ) ) {
			$user = get_user_by( 'id', (int) $id_or_email->user_id );
		}
		if ( ( ! $user || is_wp_error( $user ) ) && ! empty( $id_or_email->comment_author_email ) ) {
			$email = $id_or_email->comment_author_email;
		}
	}

	if ( ! $email_hash ) {
		if ( $user ) {
			$email = $user->user_email;
		}

		if ( $email ) {
			$email_hash = md5( strtolower( trim( $email ) ) );
		}
	}

	if ( $email_hash ) {
		$args['found_avatar'] = true;
		$gravatar_server      = hexdec( $email_hash[0] ) % 3;
	} else {
		$gravatar_server = rand( 0, 2 );
	}

	$url_args = array(
		's' => $args['size'],
		'd' => $args['default'],
		'f' => $args['force_default'] ? 'y' : false,
		'r' => $args['rating'],
	);

	if ( is_ssl() ) {
		$url = 'https://secure.gravatar.com/avatar/' . $email_hash;
	} else {
		$url = sprintf( 'http://%d.gravatar.com/avatar/%s', $gravatar_server, $email_hash );
	}

	$url = add_query_arg(
		rawurlencode_deep( array_filter( $url_args ) ),
		set_url_scheme( $url, $args['scheme'] )
	);

	/**
	 * Filters the avatar URL.
	 *
	 * @since 4.2.0
	 *
	 * @param string $url         The URL of the 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 array  $args        Arguments passed to get_avatar_data(), after processing.
	 */
	$args['url'] = apply_filters( 'get_avatar_url', $url, $id_or_email, $args );

	/**
	 * Filters the avatar data.
	 *
	 * @since 4.2.0
	 *
	 * @param array $args        Arguments passed to get_avatar_data(), after processing.
	 * @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.
	 */
	return apply_filters( 'get_avatar_data', $args, $id_or_email );
}

avatar (аватар)

Комментарии

3 коммента
    Войти