切换国内Cravatar镜像解决Wordpress头像无法加载问题

涂红伟, 2022年12月19日 15:01

什么是Gravatar? 
Gravatar是Globally Recognized Avatar的缩写,是Gravatar推出的一项服务,意为“全球通用头像”。如果在Gravatar的服务器上放置了你自己的头像,那么在任何支持Gravatar的网站上留言时,只要提供你与这个头像关联的email地址,就能够显示出你的Gravatar头像来。

Gravatar的概念是随着WordPress兴起的,很多Wordpress主题都集成了Gravatar服务,但由于目前Gravatar在国内的服务极不稳定,经常无法加载,拖慢网站前后端页面加载速度,影响了Wordpress的正常使用,这也让一些站长对Wordpress产生误解,认为是Wordpress本身慢,其实大多数时候慢的原因都是加载了一些国外的资源,除了Gravatar还可能因为CSS、JS、字体等。好在国内已经有Gravatar服务镜像,在这里感谢这些镜像提供商。

如何切换到国内Gravatar镜像?

只需要将下面的代码放在Wordpress当前使用主题的function.php结尾即可切换到国内镜像,这将有效解决因为Gravatar导致Wordpress前后台加载慢的问题。

if ( ! function_exists( 'get_cravatar_url' ) ) {
    /**
     * 替换 Gravatar 头像为 Cravatar 头像
     *
     * Cravatar 是 Gravatar 在中国的完美替代方案,你可以在 https://cravatar.cn 更新你的头像
     */
    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 );
}

标签