对Gravatar头像说再见,正式换上国内的Cravatar头像源
很多站长建站使用到了Gravatar头像源,可是这个头像源已经在国内被墙了,
国内很多大佬也想了很多方法,比如使用反代和cdn加速确保Gravatar在国内能正常访问
法律上讲这种方法虽然可行但是违法的,一不小心可能会很容易吃牢饭
这些国家禁止的东西我们再将其反代到中国使其可以正常访问,不得不说真的是细思极恐
但是话说回来,反代和cdn加速真的解决了本质问题吗,其实并没有,这种方法只是解决头像访问的问题
但是没有解决头像上传问题,我们如果换头像的话,就得利用国内的头像源去获取Gravatar头像
而且缓存没十天半个月根本刷新不出来新的头像,可谓真的不方便
现如今有一款中国国内的头像源可以代替
国内Cravatar头像源项目
Cravatar是lifepress团队在国内做的一个公益项目,是一个Gravatar完美的替代品
看了官方的文档,Cravatar100%兼容Gravatar的头像API,这意味着你可以简单的通过替换域名的方式来使用Cravatar接替Gravatar
让我惊艳的功能官方文档是这样说的
Cravatar支持在用户未设置Cravatar头像及Gravatar头像时匹配QQ头像(仅限于使用QQ数字邮箱的用户)
其带来的效果是:
经过三级匹配(Cravatar头像->Gravatar头像->QQ头像)后,大约70%的访客都会得到准确的头像
也就是使用Cravatar,如果你没有Gravatar头像,Cravatar可以默认输出你的QQ头像
这里介绍两种wordpress和typecho的接入方法
wordpress:
注意,以下主题因为使用自有的头像方案,完全屏蔽了 Gravatar,所以也不支持 Cravatar:
- 7b2
- 日主题
- 子比主题
你可以很方便的为 WordPress 集成 Cravatar 头像服务,只需要将以下代码加入你的插件或主题的 functions.php 里即可:
[wm_red]
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 );
}
[/wm_red]