On this page
get_avatar_data( mixed $id_or_email, array $args = null ): array
Retrieves default data about the avatar.
Parameters
$id_or_emailmixed Required-
The avatar to retrieve. Accepts a user ID, Gravatar MD5 hash, user email, WP_User object, WP_Post object, or WP_Comment object.
$argsarray Optional-
Arguments to use instead of the default arguments.
sizeintHeight and width of the avatar image file in pixels. Default 96.heightintDisplay height of the avatar in pixels. Defaults to $size.widthintDisplay width of the avatar in pixels. Defaults to $size.defaultstringURL 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 is the value of the'avatar_default'option, with a fallback of'mystery'.force_defaultboolWhether to always show the default image, never the Gravatar. Default false.ratingstringWhat rating to display avatars up to. Accepts'G','PG','R','X', and are judged in that order. Default is the value of the'avatar_rating'option.schemestringURL scheme to use. See set_url_scheme() for accepted values.
processed_argsarrayWhen the function returns, the value will be the processed/sanitized $args plus a "found_avatar" guess. Pass as a reference.extra_attrstringHTML 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_avatarboolTrue if an avatar was found for this user, false or not set if none was found.urlstring|falseThe URL of the avatar that was found, or false.
Source
File: wp-includes/link-template.php. View all references
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 );
}
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.
Related
Uses
| Uses | Description |
|---|---|
| is_avatar_comment_type() wp-includes/link-template.php | Check if this comment type allows avatars to be retrieved. |
| rawurlencode_deep() wp-includes/formatting.php | Navigates through an array, object, or scalar, and raw-encodes the values to be used in a URL. |
| get_user_by() wp-includes/pluggable.php | Retrieves user info by a given field. |
| is_ssl() wp-includes/load.php | Determines if SSL is used. |
| set_url_scheme() wp-includes/link-template.php | Sets the scheme for a URL. |
| get_comment_type() wp-includes/comment-template.php | Retrieves the comment type of the current comment. |
| wp_parse_args() wp-includes/functions.php | Merges user defined arguments into defaults array. |
| absint() wp-includes/functions.php | Converts a value to non-negative integer. |
| add_query_arg() wp-includes/functions.php | Retrieves a modified URL query string. |
| apply_filters() wp-includes/plugin.php | Calls the callback functions that have been added to a filter hook. |
| get_option() wp-includes/option.php | Retrieves an option value based on an option name. |
| get_comment() wp-includes/comment.php | Retrieves comment data given a comment ID or comment object. |
| is_wp_error() wp-includes/load.php | Checks whether the given variable is a WordPress Error. |
Used By
| Used By | Description |
|---|---|
| wp_credits_section_list() wp-admin/includes/credits.php | Displays a list of contributors for a given group. |
| get_avatar_url() wp-includes/link-template.php | Retrieves the avatar URL. |
| get_avatar() wp-includes/pluggable.php | Retrieves the avatar |
Changelog
| Version | Description |
|---|---|
| 4.2.0 | Introduced. |
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/get_avatar_data