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

In this article

Retrieves default data about the avatar.

Parameters

$id_or_emailmixedrequired
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.
$argsarrayoptional
Arguments to use instead of the default arguments.
  • size int
    Height and width of the avatar in pixels. Default 96.
  • height int
    Display height of the avatar in pixels. Defaults to $size.
  • width int
    Display width of the avatar in pixels. Defaults to $size.
  • default string
    URL for the default image or a default type. Accepts:
    • '404' (return a 404 instead of a default image)
    • 'retro' (a 8-bit arcade-style pixelated face)
    • 'robohash' (a robot)
    • 'monsterid' (a monster)
    • 'wavatar' (a cartoon face)
    • 'identicon' (the "quilt", a geometric pattern)
    • 'mystery', 'mm', or 'mysteryman' (The Oyster Man)
    • 'blank' (transparent GIF)
    • 'gravatar_default' (the Gravatar logo) Default is the value of the 'avatar_default' option, with a fallback of 'mystery'.
  • force_default bool
    Whether to always show the default image, never the Gravatar.
    Default false.
  • rating string
    What rating to display avatars up to. Accepts:
    • 'G' (suitable for all audiences)
    • 'PG' (possibly offensive, usually for audiences 13 and above)
    • 'R' (intended for adult audiences above 17)
    • 'X' (even more mature than above) Default is the value of the 'avatar_rating' option.
  • scheme string
    URL scheme to use. See set_url_scheme() for accepted values.
    For Gravatars this setting is ignored and HTTPS is used to avoid unnecessary redirects. The setting is retained for systems using the 'pre_get_avatar_data' filter to customize avatars.
  • processed_args array
    When the function returns, the value will be the processed/sanitized $args plus a "found_avatar" guess. Pass as a reference.
  • extra_attr string
    HTML attributes to insert in the IMG element. Is not sanitized.
    Default empty.

Default:null

Return

array Along with the arguments passed in $args, this will contain a couple of extra arguments.
  • found_avatar bool
    True if an avatar was found for this user, false or not set if none was found.
  • url string|false
    The URL of the avatar that was found, or false.

Source

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'],	);	/* * 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 ); } 

Hooks

apply_filters( ‘get_avatar_data’, array $args, mixed $id_or_email )

Filters the avatar data.

apply_filters( ‘get_avatar_url’, string $url, mixed $id_or_email, array $args )

Filters the avatar URL.

apply_filters( ‘pre_get_avatar_data’, array $args, mixed $id_or_email )

Filters whether to retrieve the avatar URL early.

Changelog

VersionDescription
6.8.0Gravatar URLs use the SHA-256 hashing algorithm.
6.7.0Gravatar URLs always use HTTPS.
4.2.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.