WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

All the comments on my website are anonymous and without registration. To post a comment you have to fill the fields name (not obligatorily) and the text of your comment (obligatorily).

I have the problem with the avatars. All of them are generated the same.

What should I do to make them different?

share|improve this question
Do you want to differentiate Registered users without avatars from Anonymous visitors? – brasofilo Jul 13 '12 at 15:25
No, I don't have registered users :-) – mvod Jul 14 '12 at 0:31
up vote 6 down vote accepted

There are two ways to customize the default avatar:

  1. Add a new default avatar to Settings/Discussion.
  2. Change the output of get_avatar().

Let’s start with the first option; this processes slightly faster.

Add a new default avatar to Settings/Discussion

There is a filter 'avatar_defaults'. You can add more avatars here.
You get an array of default images where the key is an URL and the value the visible name.

Sample Code

add_filter( 'avatar_defaults', 'wpse_58373_kitten_avatar' );

 * Add a new default avatar.
 * @param  array $avatar_defaults Key = URL, Value = Visible name.
 * @return array
function wpse_58373_kitten_avatar( $avatar_defaults )
    $avatar_defaults['http://placekitten.com/32/32'] = 'Kitty';

    return $avatar_defaults;


enter image description here

Change the output of get_avatar().

get_avatar() searches in an option named 'avatar_default' first. We can hook into 'pre_option_avatar_default' and return a custom (random) URL.

Sample code

add_filter( 'pre_option_avatar_default', 'wpse_58373_custom_default_avatar');

 * Return a random image URL
function wpse_58373_custom_default_avatar()
    /* We use images from WP here, you should change this and put some default
     * images into your theme or plugin directory.
    $base_url = admin_url( 'images' ) . '/';
    $images   = array ( 'wp-logo-vs.png', 'wpspin_dark.gif', 'yes.png' );
    $rand     = rand( 0, ( count( $images ) - 1 ) );

    return $base_url . $images[ $rand ];


enter image description here

As you can see – you should return an image with a size that matches your theme’s avatar size. :)

share|improve this answer
Thank you! Instead of placekitten.com I will try http://www.gravatar.com/avatar/{MD5}.jpg?s=32&d=identicon – mvod Jul 14 '12 at 0:35

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.