之前为了WP的Gravatar头像伤心了好久,不得已只能屏蔽调用本地图片,结果所有访问者的头像全部是千篇一律的网站logo,今天在黑桃三老哥的鼓励帮助下,再次尝试替换Gravatar头像镜像源为Cravatar。

第一次按照老哥的说法,直接把代码放到 functions.php文件末尾就行,试了下没成功,本来已经心灰意冷,可又不太甘心,于是第二次从头到尾看了下 functions.php 文件,发现这个文件里,主题作者自带修改 Gravatar SSL化的代码,删除了那段代码,修改为替换 Cravatar 的代码,就成功了~哈哈哈哈,终于兼顾了美观和访问速度~再次感谢黑桃三老兄!

WP的修改方法(先备份 functions.php),将以下代码加到主题的functions.php文件中即可

if ( ! function_exists( 'get_cravatar_url' ) ) {

    function get_cravatar_url( $url ) {
        $sources = array(
            'www.gravatar.com',
            '0.gravatar.com',
            '1.gravatar.com',
            '2.gravatar.com',
            'secure.gravatar.com',
            'cn.gravatar.com',
            'gravatar.com',
        );

        return str_replace( $sources, 'cravatar.cn', $url );
    }

    add_filter( 'um_user_avatar_url_filter', 'get_cravatar_url', 1 );
    add_filter( 'bp_gravatar_url', 'get_cravatar_url', 1 );
    add_filter( 'get_avatar_url', 'get_cravatar_url', 1 );
}

if ( ! function_exists( 'set_defaults_for_cravatar' ) ) {
    /**
     * 替换 WordPress 讨论设置中的默认头像
     */
    function set_defaults_for_cravatar( $avatar_defaults ) {
        $avatar_defaults['gravatar_default'] = 'Cravatar 标志';

        return $avatar_defaults;
    }

    add_filter( 'avatar_defaults', 'set_defaults_for_cravatar', 1 );
}

if ( ! function_exists( 'set_user_profile_picture_for_cravatar' ) ) {
    /**
     * 替换个人资料卡中的头像上传地址
     */
    function set_user_profile_picture_for_cravatar() {
        return '<a href="https://cravatar.cn" target="_blank">您可以在 Cravatar 修改您的资料图片</a>';
    }

    add_filter( 'user_profile_picture_description', 'set_user_profile_picture_for_cravatar', 1 );
}

如果没有问题的话,应该可以直接成功,如果出问题了,可以排查下,是不是和我一样,也是因为原主题也有类似的修改方案,删掉,换成这个代码即可!