Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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
add comment

1 Answer 1

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;
}

Result

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 ];
}

Result

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
add comment

Your Answer

 
discard

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.