функция since 4.2.0

get_avatar_data()

Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.

Сигнатура

get_avatar_data( mixed $id_or_email, array $args = null ): array

Описание

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

Параметры

$id_or_email mixed обязательный
Аватар для получения. Принимает ID пользователя, хеш SHA-256 или MD5 Gravatar, email пользователя, объект WP_User, объект WP_Post или объект WP_Comment.
$args array необязательный = null
Аргументы, используемые вместо аргументов по умолчанию. size intВысота и ширина аватара в пикселях. Значение по умолчанию 96. height intВысота отображения аватара в пикселях. По умолчанию $size. width intШирина отображения аватара в пикселях. По умолчанию $size. default stringURL изображения по умолчанию или тип изображения по умолчанию. Принимает: '404' (вернуть 404 вместо изображения по умолчанию) 'retro' (8-битное пикселизированное лицо в стиле аркадных автоматов) 'robohash' (робот) 'monsterid' (монстр) 'wavatar' (мультяшное лицо) 'identicon' ("лоскутный" геометрический узор) 'initials' (аватар на основе инициалов с цветным фоном) 'color' (сгенерированный цвет фона) 'mystery', 'mm' или 'mysteryman' (The Oyster Man) 'blank' (прозрачный GIF) 'gravatar_default' (логотип Gravatar) По умолчанию используется значение опции 'avatar_default' с запасным вариантом 'mystery'. force_default boolВсегда ли показывать изображение по умолчанию, никогда не показывая Gravatar. Значение по умолчанию false. rating stringДо какого рейтинга отображать аватары. Принимает: 'G' (подходит для любой аудитории) 'PG' (возможно оскорбительно, обычно для аудитории от 13 лет) 'R' (предназначено для взрослой аудитории старше 17 лет) 'X' (ещё более взрослое, чем указанное выше) По умолчанию используется значение опции 'avatar_rating'. scheme stringИспользуемая схема URL. Допустимые значения см. в set_url_scheme(). Для Gravatar эта настройка игнорируется и используется HTTPS во избежание лишних перенаправлений. Настройка сохранена для систем, использующих фильтр 'pre_get_avatar_data' для настройки аватаров. processed_args arrayПосле возврата функции значением будет обработанный/очищенный $args плюс предположение "found_avatar". Передаётся по ссылке. extra_attr stringHTML-атрибуты для вставки в элемент IMG. Не очищается.

Возвращаемое значение

array

$args found_avatar boolTrue, если аватар для этого пользователя найден; false или не задано, если ничего не найдено. url string|falseURL найденного аватара или false.

Исходный код

wp-includes/link-template.php:4415

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 '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 avatar to retrieve. Accepts a user ID, Gravatar SHA-256 or 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 ( str_contains( $id_or_email, '@sha256.gravatar.com' ) ) {
			// SHA-256 hash.
			list( $email_hash ) = explode( '@', $id_or_email );
		} elseif ( str_contains( $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 = hash( 'sha256', strtolower( trim( $email ) ) );
		}
	}

	if ( $email_hash ) {
		$args['found_avatar'] = true;
	}

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

	// Handle additional parameters for the 'initials' avatar type.
	if ( 'initials' === $args['default'] ) {
		$name = '';

		if ( $user ) {
			if ( '' !== $user->display_name ) {
				$name = $user->display_name;
			} elseif ( '' !== $user->first_name && '' !== $user->last_name ) {
				$name = sprintf(
					/* translators: 1: User's first name, 2: Last name. */
					_x( '%1$s %2$s', 'Display name based on first name and last name' ),
					$user->first_name,
					$user->last_name
				);
			} else {
				$name = $user->user_login;
			}
		} elseif ( $id_or_email instanceof WP_Comment ) {
			$name = $id_or_email->comment_author;
		} elseif ( is_string( $id_or_email ) && false !== strpos( $id_or_email, '@' ) ) {
			$name = str_replace( array( '.', '_', '-' ), ' ', substr( $id_or_email, 0, strpos( $id_or_email, '@' ) ) );
		}

		if ( '' !== $name ) {
			if ( ! str_contains( $name, ' ' ) || preg_match( '/\p{Han}|\p{Hiragana}|\p{Katakana}|\p{Hangul}/u', $name ) ) {
				$initials = mb_substr( $name, 0, min( 2, mb_strlen( $name, 'UTF-8' ) ), 'UTF-8' );
			} else {
				$first    = mb_substr( $name, 0, 1, 'UTF-8' );
				$last     = mb_substr( $name, strrpos( $name, ' ' ) + 1, 1, 'UTF-8' );
				$initials = $first . $last;
			}

			$url_args['initials'] = $initials;
		}
	}

	/*
	 * Gravatars are always served over HTTPS.
	 *
	 * The Gravatar website redirects HTTP requests to HTTPS URLs so always
	 * use the HTTPS scheme to avoid unnecessary redirects.
	 */
	$url = 'https://secure.gravatar.com/avatar/' . $email_hash;

	$url = add_query_arg(
		rawurlencode_deep( array_filter( $url_args ) ),
		$url
	);

	/**
	 * Filters the avatar URL.
	 *
	 * @since 4.2.0
	 *
	 * @param string $url         The URL of the avatar.
	 * @param mixed  $id_or_email The avatar to retrieve. Accepts a user ID, Gravatar SHA-256 or 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 avatar to retrieve. Accepts a user ID, Gravatar SHA-256 or MD5 hash,
	 *                           user email, WP_User object, WP_Post object, or WP_Comment object.
	 */
	return apply_filters( 'get_avatar_data', $args, $id_or_email );
}

История изменений

ВерсияОписание
6.8.0 Gravatar URLs use the SHA-256 hashing algorithm.
6.7.0 Gravatar URLs always use HTTPS.
4.2.0 Introduced.

Что будем искать? Например,Продвижение

Этот сайт использует куки-файлы. Оставаясь на сайте, Вы соглашаетесь на их использование. Для получения дополнительной информации, пожалуйста, ознакомьтесь с политикой в отношении персональных данных.