0

I don't like the idea of using Gravatar, and I don't want my users to be able to change their avatar. However I want to replace the avatar for the admin role only. Is it possible to do this without using a plugin and without Gravatar?

I have found code snippets to replace the default gravatar, but that would be sitewide for all users. I only want to replace the admin avatar.

Thank you!

  • Do you want a specific image for the administrators of the website? – giannisrig Nov 21 '19 at 14:54
  • Yes! Exactly, I want to specify it (in code) – jockebq Nov 21 '19 at 15:03
0

I might have found a solution. It seems to work, but maybe I am missing something?

function custom_user_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 );
    } else if ( 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 = sprintf( '%s/images/avatar/support-male.png', get_stylesheet_directory_uri() );
            $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
        }
        else if ( $user->data->ID == '200' ) {
            $avatar = sprintf( '%s/images/avatar/support-female.png', get_stylesheet_directory_uri() );
            $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
        }
        else {
            $avatar = sprintf( '%s/images/avatar/default.png', get_stylesheet_directory_uri() );
            $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
        }
    }
    return $avatar;
}
add_filter( 'get_avatar' , 'custom_user_avatar' , 1 , 5 );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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