不知道从什么时候开始,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 src="https://secure.gravatar.com/avatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2">',$avatar); return $avatar; } add_filter('get_avatar', 'get_ssl_avatar');
注册Gravatar
如果现在想不翻墙注册Gravatar又该怎么办呢,打开http://cn.gravatar.com就可以啦,貌似是唯一还能打开的Gravatar啦!不过由于启用了Google字体加载速度也是醉醉的。
当然你也可以翻墙上Gravatar去。
评论 (0)