Gravatar头像的完美替代方案Cravatar

什么是Gravatar

Gravatar是WordPress母公司Automattic推出的一个公共头像服务,也是WordPress默认的头像服务。但因为长城防火墙的存在,Gravatar在中国时不时就会被墙一下,比如本次从2021年2月一直到8月都是不可访问状态。

在以往的时候,国内的CDN厂商和博客主会使用反代的方式确保Gravatar在国内能正常访问,但老实说,这种方式很容易就会吃牢饭。不妨想一下,Gravatar为什么会墙?一定是出现了某些涉政、涉黄之类的违法内容。这些国家禁止的东西,我们将其反代入国内,可谓是细思极恐。同时反代也只能解决头像访问的问题,而解决不了头像上传的问题。

Cravatar简介

由于国内一直无法正常加载Gravatar全球通用头像,严重拖慢WordPress的加载速度,另外一些新手可能也不知道如何申请头像。近日WP-China-Yes插件的作者,再次推出并上线了国内Gravatar头像的完美替代方案Cravatar

国内Gravatar头像的完美替代方案Cravatar

Cravatar 完全兼容 Gravatar 的 API 规范,支持用户上传和分享头像。

进入Cravatar头像网站,用自己常用的邮箱注册,登录后点击“立即创建你的头像”。

上传一张头像图片,用注册的邮箱在支持头像显示的网站留言,就会看到自己专有的Cravatar头像。

那如何将Cravatar头像服务集成到自己的WordPress网站中呢?

很简单,将下面的代码添加到当前主题函数模板functions.php中即可:

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'
        );

        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 );
}

之后,Cravatar头像会替代Gravatar,头像加载速度显著提升,也不需要再将头像缓存到本地了。

当留言者使用的QQ邮箱没有申请头像,Cravatar会自动调用QQ头像,非常人性化。

另外,还可以尝试安装:LitePress中国本土的WordPress发行版

主题兼容情况及使用方法

知更鸟主题

知更鸟主题完美支持Cravatar头像,只需要在自定义获取头像地址中输入:cravatar.cn/avatar/,即可调用Cravatar头像。

沉默的大多数

未对WordPress本身 头像方案 过多魔改的主题可以通过安装 WP-China-Yes插件 的方法或者将下面的代码加入你的插件或主题的functions.php中

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'
        );

        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 );
}

暂不支持的

以下主题因为使用自有的头像方案,完全屏蔽了Gravatar,所以也不支持Cravatar:

  • 7B2
  • 日主题
  • 子比主题

其他主题的用户可以先去咨询一下作者是否愿意接入Cravatar,子比主题的作者明确表示暂不考虑,因此为了能够用上 Cravatar 头像只能自己修改,费尽千辛万苦终于搞好,后续整理一下子比主题支持Cravatar需要修改的代码,单独成文,这里仅作预告。

本站头像均调用自 Cravatar

参考自:

© 版权声明
THE END
喜欢就支持一下吧
点赞31赞赏
分享
评论 共11条
    • 的头像-登山亦有道
    • 不知道是不是我的原因,从我这里看,你网站的favicon现在是wp的默认图标,那个W字母
      28天前回复
    • 的头像-登山亦有道
    • 回头我试试,如果这个地址,能正常调用,那就太棒了。
      42天前回复
      • 不是我做的,外观方面子比还是可以的 不过以前白色主题只能用白色的代码高亮样式
        42天前@牧之回复
    • 的头像-登山亦有道
    • 不用代码这么复杂,WordPress下面最好用WP China Yes插件,简单方便。
      43天前回复
      • 是的用插件最方便,代码只是给不想装插件的用户一个选择,像我这边就只能强行修改代码了
        43天前@马内回复