Gravatar头像服务被墙打不开的解决


不知道从什么时候开始,Wordpress一直以来都依赖的Gravatar头像服务在国内被墙无法访问,因此使得很多使用了Gravatar头像在前台显示的出现如好友墙读者墙什么的Wordpress博客打开后就一直在加载…

其实我们可以使用下面的3种解决Gravatar打不开不显示的方法:

多说头像调用、使用本地缓存、使用SSL方式调用头像,其中比较推荐的是多说的头像调用,SSL方式由于依然使用国外服务器所以速度上依然不是很快。

方法一:调用多说Gravatar头像

后台 -> 外观 ->编辑 选择functions.php,在底部加入以下代码(注意在最后一个?>之前)

function duoshuo_avatar($avatar) {
$avatar = str_replace(array(www.gravatar.com,0.gravatar.com,1.gravatar.com,2.gravatar.com),gravatar.duoshuo.com,$avatar);
return $avatar;
}
add_filter('get_avatar', 'duoshuo_avatar', 10, 3 );

方法二:使用本地缓存调用Gravatar

function my_avatar($avatar) {
$tmp = strpos($avatar, 'http');
$g = substr($avatar, $tmp, strpos($avatar, ', $tmp) - $tmp);
$tmp = strpos($g, 'avatar/') + 7;
$f = substr($g, $tmp, strpos($g, ?, $tmp) - $tmp);
$w = get_bloginfo('wpurl');
$e = ABSPATH .'avatar/'. $f .'.jpg';
$t = 1209600; //設定14天, 單位:秒
if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新
copy(htmlspecialchars_decode($g), $e);
} else $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
if (filesize($e) < 500) copy($w.'/avatar/default.jpg', $e);
return $avatar;
}
add_filter('get_avatar', 'my_avatar')

同上,加入functions.php文件中,不过有一个问题就是国内主机无法使用,香港主机、日本主机、美国主机等可以使用。

方法三:使用SSL调用Gravatar头像

function get_ssl_avatar($avatar) {
$avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&&.*/','<img class=avatar avatar-$2 src=https://secure.gravatar.com/avatar/$1?s=$2 alt= width=$2 height=$2 />',$avatar);
return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');

注册Gravatar

如果现在想不翻墙注册Gravatar又该怎么办呢,打开http://cn.gravatar.com就可以啦,貌似是唯一还能打开的Gravatar啦!不过由于启用了Google字体加载速度也是醉醉的。

当然你也可以翻墙上Gravatar去。

声明:YunHe.ME | 云和の小屋|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Gravatar头像服务被墙打不开的解决


想我所愿,勇往直前,不畏艰险,有远大志向