get_avatar_data() WP 4.2.0

Отримує масив даних про аватар, за переданим email, ID, об’єкт користувача, об’єкт посту або коментаря.

Ця функція не перевірять, чи реально аватар, вона просто збирає URL на сервіс gravatar.com. Щоб перевірити, якщо у email аватар, вам потрібно окремо обробити отриманий URL. Потрібно вказати в default 404, потім отримати URL і спробувати отримати картинку цього URL через get_headers() . Якщо відповідь поверне 404, то аватарки email немає.

Також дивіться функцію 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 – [email protected]
  • 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’, або ‘relative’. Докладніше дивіться функцію set_url_scheme() .
    Типово: null

  • processed_args (масив)
    Додаткові опції передачі. При фільтрації та поверненні даних функцією get_avatar_data() ці параметри будуть додані у масив, що повертається.
    Типово: null

  • extra_attr (рядок)
    HTML атрибути для додавання до елементу IMG. Чи не очищаються.
    За замовчуванням: ”

Типово: null

Приклади

0

#1 Отримаємо дані аватарки по email користувача

$ava_data = get_avatar_data( '[email protected]', 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
)
*/
0

#2 Отримаємо дані аватара поточного користувача

$ava_data = get_avatar_data( wp_get_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
)
*/
0

#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
)
*/
0

#4 Передаємо додаткові параметри

$ava_data = get_avatar_data( '[email protected]', 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 6.0.2

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 в '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(), після processing.
	 * @param mixed $id_or_email Gravatar to retrieve. Accepts a user ID, Gravatar MD5 hash,
	 * user email, WP_User object, WP_Post object, або WP_Comment object.
	 */
	$args = apply_filters( 'pre_get_avatar_data', $args, $id_or_email );

	if ( isset( $args['url'] ) ) {
		/** Цей filter is documented в 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;
			/** Цей filter is documented в 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 Gravatar to retrieve. Accepts a user ID, Gravatar MD5 hash,
	 * user email, WP_User object, WP_Post object, або WP_Comment object.
	 * @param array $args Arguments passed to get_avatar_data(), після 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(), після processing.
	 * @param mixed $id_or_email Gravatar to retrieve. Accepts a user ID, Gravatar MD5 hash,
	 * user email, WP_User object, WP_Post object, або WP_Comment object.
	 */
	return apply_filters( 'get_avatar_data', $args, $id_or_email );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *