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 image file 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' (8bit), 'monsterid' (monster), 'wavatar' (cartoon face), 'indenticon' (the "quilt"), 'mystery', 'mm', or 'mysteryman' (The Oyster Man), 'blank' (transparent GIF), or 'gravatar_default' (the Gravatar logo).
Default: 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', 'PG', 'R', 'X', and are judged in that order.
Default: value of the 'avatar_rating' option
scheme (string)
URL scheme to use. See set_url_scheme() for accepted values.
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 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
)
*/
#2 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
)
*/
#3 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
)
*/
#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
get_avatar_data() get avatar data code
WP 6.1.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 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 ( 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 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