前言
最近gravatar头像的服务器中国大陆已经从访问缓慢变成了彻底无法访问了,也导致了缓存到本地头像的方法无法使用,因为无法访问就根本没有办法下载到本地缓存了。所以在网上找了一些解决方法,并进行了整理。
使用插件设置镜像
相比于直接修改主题,使用插件更加的简单,便于操作。但有一些内容和关联需要捋清楚再根据自己的需求来做选择。
使用WPAavatar插件
这是由文派开发的一款头像镜像插件,与下面的那个插件类似,但是这个插件可以自定义CDN地址。
官网:https://wpavatar.com/
使用起来很简单,去官网下载这个插件然后,上传到 WordPress 后启动。之后去设置
->头像
。
在该页面,选择启用初认头像
,线路选择
选择第三方镜像
或者自定义CDN
,然后输入或者选择第三方镜像即可。注意自行输入的话不要带/avatar/
。
如果你不理解 Cravatar 是什么,对线路选择
选项很困惑,最好前往下面的Cravatar和Gravatar区别章节了解后再使用这个插件。
使用WP-China-Yes插件
这是由文派叶子开发的专为国内用户打造的加速插件,里面涉及到的加速内容很多,其中就有头像加速服务。但请注意这里的加速实际上是将所有的头像服务器更换为了国内的初认头像(Cravatar)这并不是 Gravatar 的镜像。Cravatar 和 Gravatar 是两个不同且独立的网络头像托管服务。
GitHub:https://github.com/WenPai-org/wp-china-yes
官网:https://wpcy.com/
官方对于初认头像使用的说明:https://wpcy.com/document/gravatar-alternatives
首先去官网或者 GitHub 上的 Release 下载该插件,之后上传到你的 WordPress 后启用。
前往设置
->WP-China-Yes
->加速设置
->初认头像
。
这里我会将官方的使用说明放进来:
由于 Gravatar 头像服务在中国无法正常访问,而 WordPress 系统本身和大部分主题插件都已经默认集成了此服务,这极大程度上影响了中国用户的使用体验,为此我们专门开发了初认头像 (Cravatar) 服务中国本土化的头像托管服务来进行加速和替代。
[初认头像 (Cravatar)](https://cravatar.com/)Gravatar 在中国的完美替代方案,您可以在 Cravatar.com 上传头像,更多选项请安装 WPAavatar 插件。
(任何开发者均可在自己的产品中集成该服务,不局限于 WordPress)
同时我们提供了几个选项
- 默认线路
- 国际线路
- 备用源 (WeAvatar.com)
- 不启用
其中,默认线路默认是通过 cravatar.cn 进行流量传达,国际线路是通过 cn.cravatar.com ,备用源是由耗子科技 @haozi 提供的 WeAvatar 服务。
这些服务源均开启了国内的政策合规的内容审核,可保障您网站上显示的头像图片正常使用而不用担心出现违规情况。
Cravatar和Gravatar区别
Cravatar 官方明确表示了,Cravatar 和 Gravatar 是两个不同且独立的网络头像托管服务。Cravatar 的头像信息是经过了三级匹配来实现的,即 Cravatar -> Gravatar -> QQ头像(仅限于使用QQ数字邮箱的用户)。所以你就算是没注册 Cravatar 他也能够获取到你的 Gravatar 头像或者是QQ头像,这类似于weavatar的头像服务。同样的请注意和遵守当地的法律法规! Cravatar 的服务源均开启了内容审核!
这样也就能理解 WPAvatar 插件的线路选择设置的区别了,第一个是 Cravatar 的独立服务,第三方镜像中的 WeAvatar 也是类似的服务。如果比较在意头像内容可能存在隐私问题,可以使用除这两个外的其他镜像或者自己搭建来实现。
设置镜像服务器获取头像
如果你的主题有设置gravatar头像镜像地址的地方则不需要,同时某些复杂的主题可能已经对于头像的获取方法有所修改(例如git主题),所以此方法可能会无效或者导致主题出现严重问题,请确保在修改前对文件进行过备份。
首先需要找到几个镜像地址,下面提供的地址可能会失效,请自行检验。
sdn.geekzu.org
gravatar.loli.net
gravatar.zeruns.tech
cdn.sep.cc
新版代码(我偷懒了,直接复制粘贴的WeAvatar他们文档的代码):
这个版本相比旧版更全面,并且支持新版WordPress。将这段代码添加到主题的functions.php
文件中,然后将其中的weavatar.com
替换为你的镜像地址,注意地址中不要包含/avatar/
路径。
if ( ! function_exists( 'get_weavatar_url' ) ) {
/**
* 替换 Gravatar 头像为 WeAvatar 头像
*
* WeAvatar 是新一代头像服务解决方案,可在 https://weavatar.com 修改头像
*/
function get_weavatar_url( $url ) {
$sources = array(
'www.gravatar.com',
'0.gravatar.com',
'1.gravatar.com',
'2.gravatar.com',
'secure.gravatar.com',
'cn.gravatar.com',
'gravatar.com',
'sdn.geekzu.org',
'gravatar.duoshuo.com',
'gravatar.loli.net',
'cravatar.cn',
);
return str_replace( $sources, 'weavatar.com', $url );
}
add_filter( 'um_user_avatar_url_filter', 'get_weavatar_url', 1 );
add_filter( 'bp_gravatar_url', 'get_weavatar_url', 1 );
add_filter( 'get_avatar_url', 'get_weavatar_url', 1 );
add_filter( 'um_user_avatar_url_filter', 'get_weavatar_url', PHP_INT_MAX );
add_filter( 'bp_gravatar_url', 'get_weavatar_url', PHP_INT_MAX );
add_filter( 'get_avatar_url', 'get_weavatar_url', PHP_INT_MAX );
}
if ( ! function_exists( 'set_defaults_for_weavatar' ) ) {
/**
* 替换 WordPress 讨论设置中的默认头像
*/
function set_defaults_for_weavatar( $avatar_defaults ) {
$avatar_defaults['gravatar_default'] = 'WeAvatar 头像';
return $avatar_defaults;
}
add_filter( 'avatar_defaults', 'set_defaults_for_weavatar', 1 );
}
if ( ! function_exists( 'set_user_profile_picture_for_weavatar' ) ) {
/**
* 替换个人资料卡中的头像上传地址
*/
function set_user_profile_picture_for_weavatar() {
return '<a href="https://weavatar.com" target="_blank">您可以在 WeAvatar 修改您的资料图片</a>';
}
add_filter( 'user_profile_picture_description', 'set_user_profile_picture_for_weavatar', 1 );
}
旧版代码:
这段代码可能已经不兼容新版WordPress,我没有在WordPress 6.0及以上版本中测试过。但WordPress 4.x版本肯定是支持的,我之前使用过。
将下面的代码添加到当前主题函数模板functions.php
中:
add_filter('get_avatar', function ($avatar) {
return str_replace([
'www.gravatar.com/avatar/',
'0.gravatar.com/avatar/',
'1.gravatar.com/avatar/',
'2.gravatar.com/avatar/',
'secure.gravatar.com/avatar/',
'cn.gravatar.com/avatar/'
], 'sdn.geekzu.org/avatar/', $avatar);
});
通过add_filter替换默认的头像服务器地址,可修改其中的:sdn.geekzu.org/avatar/
为其它镜像服务器地址。注意要有/avatar/
。
本方法可以实现前后台同时使用Gravatar头像镜像服务器,代码取自WP-China-Yes插件。
对于Git主题(仅存档备份)
这个在新版可能也已经失效了,就当存档备份了。因为Git主题作者已经不再维护了。
目前笔者使用的是老版的git主题 9.3.2版本
,因为很多东西已经改变了,导致一部分功能已经失效,但是我又懒得更新主题然后重新修改。所以决定自己动手修改function.php里面的函数,来保证可以正常的使用Gravatar镜像服务器。本人技术有限,使用方法可能不会正确,仅供参考。(本人已对git主题作者进行赞助,具体请查看本博客的关于界面,若想要对git主题进行修改,请务必先赞助原作者。)
git主题是可以自己设置镜像服务器的,但是在测试后发现这个功能失效了。在使用chrome的开发者工具进行测试后发现,无论我将镜像地址修改到哪里他所使用的地址还都是不变的。他永远会使用secure.gravatar.com
这个地址来获取头像,所以我想可能是地址替换那里出问题了,打开function.php后发现旧版的函数确实并没有替换这个地址:
function git_avatar_cache($avatar) {
$avatar = str_replace(array(
"www.gravatar.com",
"0.gravatar.com",
"1.gravatar.com",
"2.gravatar.com"
) , git_get_option('git_avatar_qnurl') , $avatar);
return $avatar;
}
所以做了如下的修改:
function git_avatar_cache($avatar) {
$avatar = str_replace(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/'
) , git_get_option('git_avatar_qnurl') , $avatar);
return $avatar;
}
修改后保存,再次在高级设置
标签栏里面选择头像镜像【精确】
,并在Gravatar头像镜像服务器
里面填写镜像地址即可正常使用。
修改记录:
- 2025-10-01:增加插件使用方法,新增代码修改方案,更新
cdn.sep.cc
域名配置,移除不可用的gravatar.wp-china-yes.net
镜像域名。 - 2021-10-05:感谢cyclists提供的信息,已将镜像服务器地址中的
gravatar.inwao.com/avatar/
更新为cdn.sep.cc/avatar/inwao
,原域名已停止使用。
参考资料:
cdn.sep.cc/avatar/inwao 改成cdn.sep.cc/avatar/