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

Retrieves default data about the avatar.


Parameters

$id_or_email

(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

(Optional) Arguments to use instead of the default arguments.<br>

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


    Return

    (array) Along with the arguments passed in $args, this will contain a couple of extra arguments.<br>

    • 'found_avatar'
      (bool) True if an avatar was found for this user, false or not set if none was found.<br>
    • 'url'
      (string|false) The URL of the avatar that was found, or false.<br>


    Source

    File: wp-includes/link-template.php

    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 WP-4.2.0
    	 *
    	 * @param array  $args        Arguments passed to get_avatar_data(), after processing.
    	 * @param mixed  $id_or_email The Gravatar 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'] ) && ! is_null( $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 = $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 ) {
    		/**
    		 * Filters the list of allowed comment types for retrieving avatars.
    		 *
    		 * @since WP-3.0.0
    		 *
    		 * @param array $types An array of content types. Default only contains 'comment'.
    		 */
    		$allowed_comment_types = apply_filters( 'get_avatar_comment_types', array( 'comment' ) );
    		if ( ! empty( $id_or_email->comment_type ) && ! in_array( $id_or_email->comment_type, (array) $allowed_comment_types ) ) {
    			$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 WP-4.2.0
    	 *
    	 * @param string $url         The URL of the avatar.
    	 * @param mixed  $id_or_email The Gravatar 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 WP-4.2.0
    	 *
    	 * @param array  $args        Arguments passed to get_avatar_data(), after processing.
    	 * @param mixed  $id_or_email The Gravatar 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 );
    }
    


    Changelog

    Changelog
    Version Description
    6.7.0 Gravatar URLs always use HTTPS.
    4.2.0 Introduced.