get_avatar( mixed $id_or_email, int $size = 96, string $default_value = , string $alt = , array $args = null ): string|false

Retrieves the avatar <img> tag for a user, email address, MD5 hash, comment, or post.

Parameters

$id_or_emailmixedrequired
The avatar to retrieve. Accepts a user ID, Gravatar MD5 hash, user email, WP_User object, WP_Post object, or WP_Comment object.
$sizeintoptional
Height and width of the avatar in pixels.

Default:96

$default_valuestringoptional
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'.

Default:''

$altstringoptional
Alternative text to use in the avatar image tag.

Default:''

$argsarrayoptional
Extra arguments to retrieve the avatar.
  • height int
    Display height of the avatar in pixels. Defaults to $size.
  • width int
    Display width of the avatar in pixels. Defaults to $size.
  • 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.
  • class array|string
    Array or string of additional classes to add to the img element.
  • force_display bool
    Whether to always show the avatar – ignores the show_avatars option.
    Default false.
  • loading string
    Value for the loading attribute.
  • fetchpriority string
    Value for the fetchpriority attribute.
  • decoding string
    Value for the decoding attribute.
  • extra_attr string
    HTML attributes to insert in the IMG element. Is not sanitized.
    Default empty.

Default:null

Return

string|false <img> tag for the user’s avatar. False on failure.

Source

function get_avatar( $id_or_email, $size = 96, $default_value = '', $alt = '', $args = null ) {
	$defaults = array(
		// get_avatar_data() args.
		'size'          => 96,
		'height'        => null,
		'width'         => null,
		'default'       => get_option( 'avatar_default', 'mystery' ),
		'force_default' => false,
		'rating'        => get_option( 'avatar_rating' ),
		'scheme'        => null,
		'alt'           => '',
		'class'         => null,
		'force_display' => false,
		'loading'       => null,
		'fetchpriority' => null,
		'decoding'      => null,
		'extra_attr'    => '',
	);

	if ( empty( $args ) ) {
		$args = array();
	}

	$args['size']    = (int) $size;
	$args['default'] = $default_value;
	$args['alt']     = $alt;

	$args = wp_parse_args( $args, $defaults );

	if ( empty( $args['height'] ) ) {
		$args['height'] = $args['size'];
	}
	if ( empty( $args['width'] ) ) {
		$args['width'] = $args['size'];
	}

	// Update args with loading optimized attributes.
	$loading_optimization_attr = wp_get_loading_optimization_attributes( 'img', $args, 'get_avatar' );

	$args = array_merge( $args, $loading_optimization_attr );

	if ( is_object( $id_or_email ) && isset( $id_or_email->comment_ID ) ) {
		$id_or_email = get_comment( $id_or_email );
	}

	/**
	 * Allows the HTML for a user's avatar to be returned early.
	 *
	 * Returning a non-null value will effectively short-circuit get_avatar(), passing
	 * the value through the 'get_avatar' filter and returning early.
	 *
	 * @since 4.2.0
	 *
	 * @param string|null $avatar      HTML for the user's avatar. Default null.
	 * @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_url(), after processing.
	 */
	$avatar = apply_filters( 'pre_get_avatar', null, $id_or_email, $args );

	if ( ! is_null( $avatar ) ) {
		/** This filter is documented in wp-includes/pluggable.php */
		return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args );
	}

	if ( ! $args['force_display'] && ! get_option( 'show_avatars' ) ) {
		return false;
	}

	$url2x = get_avatar_url( $id_or_email, array_merge( $args, array( 'size' => $args['size'] * 2 ) ) );

	$args = get_avatar_data( $id_or_email, $args );

	$url = $args['url'];

	if ( ! $url || is_wp_error( $url ) ) {
		return false;
	}

	$class = array( 'avatar', 'avatar-' . (int) $args['size'], 'photo' );

	if ( ! $args['found_avatar'] || $args['force_default'] ) {
		$class[] = 'avatar-default';
	}

	if ( $args['class'] ) {
		if ( is_array( $args['class'] ) ) {
			$class = array_merge( $class, $args['class'] );
		} else {
			$class[] = $args['class'];
		}
	}

	// Add `loading`, `fetchpriority`, and `decoding` attributes.
	$extra_attr = $args['extra_attr'];

	if ( in_array( $args['loading'], array( 'lazy', 'eager' ), true )
		&& ! preg_match( '/\bloading\s*=/', $extra_attr )
	) {
		if ( ! empty( $extra_attr ) ) {
			$extra_attr .= ' ';
		}

		$extra_attr .= "loading='{$args['loading']}'";
	}

	if ( in_array( $args['fetchpriority'], array( 'high', 'low', 'auto' ), true )
		&& ! preg_match( '/\bfetchpriority\s*=/', $extra_attr )
	) {
		if ( ! empty( $extra_attr ) ) {
			$extra_attr .= ' ';
		}

		$extra_attr .= "fetchpriority='{$args['fetchpriority']}'";
	}

	if ( in_array( $args['decoding'], array( 'async', 'sync', 'auto' ), true )
		&& ! preg_match( '/\bdecoding\s*=/', $extra_attr )
	) {
		if ( ! empty( $extra_attr ) ) {
			$extra_attr .= ' ';
		}

		$extra_attr .= "decoding='{$args['decoding']}'";
	}

	$avatar = sprintf(
		"<img alt='%s' src='%s' srcset='%s' class='%s' height='%d' width='%d' %s/>",
		esc_attr( $args['alt'] ),
		esc_url( $url ),
		esc_url( $url2x ) . ' 2x',
		esc_attr( implode( ' ', $class ) ),
		(int) $args['height'],
		(int) $args['width'],
		$extra_attr
	);

	/**
	 * Filters the HTML for a user's avatar.
	 *
	 * @since 2.5.0
	 * @since 4.2.0 Added the `$args` parameter.
	 *
	 * @param string $avatar        HTML for the user's 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 int    $size          Height and width of the avatar in pixels.
	 * @param string $default_value 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)
	 * @param string $alt           Alternative text to use in the avatar image tag.
	 * @param array  $args          Arguments passed to get_avatar_data(), after processing.
	 */
	return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args );
}

Hooks

apply_filters( ‘get_avatar’, string $avatar, mixed $id_or_email, int $size, string $default_value, string $alt, array $args )

Filters the HTML for a user’s avatar.

apply_filters( ‘pre_get_avatar’, string|null $avatar, mixed $id_or_email, array $args )

Allows the HTML for a user’s avatar to be returned early.

Changelog

VersionDescription
6.3.0Added the fetchpriority argument.
6.1.0Added the decoding argument.
5.5.0Added the loading argument.
4.2.0Added the optional $args parameter.
2.5.0Introduced.

User Contributed Notes

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