apply_filters( 'get_avatar', string $avatar, mixed $id_or_email, int $size, string $default, string $alt, array $args )

Filters the HTML for a user’s avatar.



(string) HTML for the user's avatar.


(mixed) The avatar to retrieve. Accepts a user_id, Gravatar MD5 hash, user email, WP_User object, WP_Post object, or WP_Comment object.


(int) Square avatar width and height in pixels to retrieve.


(string) URL for the default image or a default type. Accepts '404', 'retro', 'monsterid', 'wavatar', 'indenticon', 'mystery', 'mm', 'mysteryman', 'blank', or 'gravatar_default'.


(string) Alternative text to use in the avatar image tag.


(array) Arguments passed to get_avatar_data(), after processing.

Top ↑

More Information

The “get_avatar” filter can be used to alter the avatar image returned by the get_avatar() function.

There are two tricky parts to using this filter:

  1. get_avatar() can be passed a user ID, user object or email address. So we will not know what we are looking at and will need to check for them all.
  2. It returns the entire image html string with classes, alt, and src. So you need to recreate the entire thing, not just send back the image url.

Top ↑


File: wp-includes/pluggable.php

View on Trac

Top ↑


Version Description
4.2.0 The $args parameter was added.
2.5.0 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 1 content
    Contributed by Steven Lin

    Example migrating from Codex:

    In this example, I am looking for user with an id of 1 and sending back a custom image.

    // Apply filter
    add_filter( 'get_avatar' , 'my_custom_avatar' , 1 , 5 );
    function my_custom_avatar( $avatar, $id_or_email, $size, $default, $alt ) {
        $user = false;
        if ( is_numeric( $id_or_email ) ) {
            $id = (int) $id_or_email;
            $user = get_user_by( 'id' , $id );
        } elseif ( is_object( $id_or_email ) ) {
            if ( ! empty( $id_or_email->user_id ) ) {
                $id = (int) $id_or_email->user_id;
                $user = get_user_by( 'id' , $id );
        } else {
            $user = get_user_by( 'email', $id_or_email );	
        if ( $user && is_object( $user ) ) {
            if ( $user->data->ID == '1' ) {
                $avatar = 'YOUR_NEW_IMAGE_URL';
                $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
        return $avatar;

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