解决国内Gravatar头像无法访问

WordPress默认头像来源于Garvatar,当用户没有配置自己的头像时,会加载一张默认的图片作为头像,但是因为墙的原因加速速度极慢甚至加载失败,不仅影响页面美观,也会拖累页面的加载。如果简单的直接去除头像功能,可以在设置-讨论下取消勾选【显示头像】,但是如果想要正常使用头像功能,就需要通过插件或者代码的方式解决。

一、插件

1、WP-China-Yes:国内大佬开发,提供将WordPress切换至本土生态,在头像功能中提供对 Garvatar 加速支持。但是因为部分原因在WordPress官方插件市场中下架,需要手动下载插件压缩包安装。

2、WP User Avatar:官方插件市场中安装和推荐数量较高的一个头像插件,允许注册用户上传和选择自定义图片作为头像。

二、代码

在外观-主题编辑器中,修改当前使用主题的模板函数function.php,在文件内添加如下代码

/**
 * 替换WordPress的Gravatar头像源
 * https://www.ilxtx.com/replace-gravatar-server.html
 */
if ( ! function_exists( 'dr_filter_get_avatar' ) ) {
    function dr_filter_get_avatar( $avatar ) {
        // 新Gravatar头像源,可自行修改
        $new_gravatar_sever = 'cravatar.cn';

        $sources = array(
            'www.gravatar.com/avatar/',
            '0.gravatar.com/avatar/',
            '1.gravatar.com/avatar/',
            '2.gravatar.com/avatar/',
            'secure.gravatar.com/avatar/',
            'cn.gravatar.com/avatar/'
        );

        return str_replace( $sources, $new_gravatar_sever.'/avatar/', $avatar );
    }
    add_filter( 'get_avatar', 'dr_filter_get_avatar' );
}

另外,上面代码里的头像源cravatar.cn使用的是国内大佬开发的Cravatar头像。Cravatar完美兼容Gravatar头像的API接口,如果未在Cravatar设置头像,则会先尝试调用Gravatar上的头像数据,其后是QQ头像(仅限于使用 QQ 数字邮箱的用户,具体字段位于WordPress数据库wp_users表,user_email字段),最后会返回一组默认头像。这一切是自动进行的,用户对此无感知。

通过代码+插件的方式,即可实现上传自定义图片作为头像的功能,同时如果没有上传头像,那么会使用一张默认图片作为头像,扩展了WordPress头像功能,也避免了国内访问Gravatar头像可能出现的问题。

5 年 ago

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注