Fix error Gravatar alt

The question:

add_filter( 'get_avatar' , 'alt_name_avatar');
function alt_name_avatar( $avatar ) {
    $alt = get_comment_author();
    $avatar = str_replace('alt=''','alt='Avatar for '.$alt.'' title='Avatar for '.$alt.''',$avatar);
    return $avatar;
}

This code works but throws an error.

PHP Notice:  Trying to get property 'user_id' of non-object in .../wp-includes/comment-template.php on line 28
PHP Notice:  Trying to get property 'comment_ID' of non-object in .../wp-includes/comment-template.php on line 48

How to fix.

P.S.
i use on all pages recent comments with Gravatar in the sidebar

Sorry for my English.

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

You don’t check anywhere that you’re viewing a comment when you use get_comment_author();. The get_avatar() function is used in a lot of places in WordPress; your code seems to assume it’s only in use on comments.

Try this (the code is untested, but should work, I think):

add_filter( 'get_avatar' , 'alt_name_avatar');
function alt_name_avatar( $avatar ) {
    if ( null === get_comment() ) {
        // This isn't a comment.
        return $avatar;
    }
    $alt = get_comment_author();
    $avatar = str_replace('alt=''','alt='Avatar for '.$alt.'' title='Avatar for '.$alt.''',$avatar);
    return $avatar;
}

There doesn’t seem to be a simple is_comment() check to see if we’re viewing a comment, so I’ve chosen to test get_comment(), which will return null if we’re not in a comment.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment