get_avatar_data() │ WP 4.2.0
Retrieves default data about the avatar.
Return
Array
. Along with the arguments passed in $args , this will contain a couple of extra arguments.
Usage
get_avatar_data( $id_or_email, $args );
$id_or_email(mixed) (required)
The avatar to retrieve. Accepts a user ID, Gravatar MD5 hash, user email, WP_User object, WP_Post object, or WP_Comment object.
$args(array)
Arguments to use instead of the default arguments.
Default: null
size (int)
Height and width of the avatar in pixels.
Default: 96
height (int)
Display height of the avatar in pixels.
Default: $size
width (int)
Display width of the avatar in pixels.
Default: $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 (true|false)
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 {@see 'pre_get_avatar_data'} filter to customize avatars.
Default: null
processed_args (array)
When the function returns, the value will be the processed/sanitized $args plus a "found_avatar" guess. Pass as a reference.
Default: null
extra_attr (string)
HTML attributes to insert in the IMG element. Is not sanitized.
Default: ''
Examples
#1 Get the avatar data of the author of the current post
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
)
*/
#2 Get the avatar data from the user's 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
)
*/
#3 Get the avatar data of the current user
$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
)
*/
#4 Transmit additional parameters
$ava_data = get_avatar_data( '[email protected] ', array(
'processed_args' => [ 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
)
*/
Add Your Own Example
Changelog
Since 4.2.0
Introduced.
Since 6.7.0
Gravatar URLs always use HTTPS.
get_avatar_data() get avatar data code
WP 6.7.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 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 avatar 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 ( 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 = md5( 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 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 MD5 hash,
* user email, WP_User object, WP_Post object, or WP_Comment object.
*/
return apply_filters( 'get_avatar_data', $args, $id_or_email );
}
Related Functions