对于集成了Woocommerce+Buddypress+Bbpress商城社区论坛主题,因为www.gravatar.com头像被和谐,而网上对于解决头像被和谐的代码都只是适合WP本身,对这些插件没有任何作用。
Buddypress中成员、群组都需要设置头像,也考虑到很多人并没有注册gravatar全球通用头像,在社区个人档案中可以上传自定义头像,所以把整站的头像都本地化,以下代码可解决WP中任意的头像本地化:


function bp_remove_gravatar ($image, $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir) {
    $default = get_stylesheet_directory_uri() .'/images/customGravatar.png';
    if( $image && strpos( $image, "gravatar.com" ) ){
        return '<img src="' . $default . '" alt="avatar" class="avatar" ' . $html_width . $html_height . ' />';
    } else {
        return $image;
    }
}
add_filter('bp_core_fetch_avatar', 'bp_remove_gravatar', 1, 9 );
function remove_gravatar ($avatar, $id_or_email, $size, $default, $alt) {
    $default = get_stylesheet_directory_uri() .'/images/customGravatar.png';
    return "<img alt='{$alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
add_filter('get_avatar', 'remove_gravatar', 1, 5);
function bp_remove_signup_gravatar ($image) {
    $default = get_stylesheet_directory_uri() .'/images/customGravatar.png';
    if( $image && strpos( $image, "gravatar.com" ) ){
        return '<img src="' . $default . '" alt="avatar" class="avatar" width="auto" height="auto" />';
    } else {
        return $image;
    }
}