网站默认情况下显示的 Gravatar 头像都是直接调用其服务器上面的资源,Gravatar 服务器有很大的不稳定性,前段时间就在国内造成了大面积的无法访问。今天园子就与大家分享下缓存 Gravatar 头像到本地最简单的方法。
在以前的文章中园子也介绍过缓存 Gravatar 头像到本地服务器的一些可行方法,里面提供的方法在现在看到已经有些复杂了。这次分享的是来自 Willin Kan 大师的作品,只需要简单三步就可以实现缓存头像到本地服务器。
三步实现缓存 Gravatar 头像到本地
1.在你网站的根目录,也就是与 wp-content 文件夹同级的目录下新建立一个 avatar 文件夹,更改权限为0755(在FTP软件中,右键点击文件夹,选择“属性”或者“CHMOD”即可打开属性窗口,在里面更改权限即可)。这个文件夹就是将来存放 Gravatar 头像的地方。
2.准备一张默认的头像图片,命名为:default.jpg,将其上传到 avatar 文件夹下面。这张图片的作用就是如果用户没有定义过头像,就调用这张默认的头像。这里有园子提供的图片下载。
3.将下面的代码复制到你使用主题中的 functions.php 文件中,保存并上传。再次刷新页面,即可看到 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');
当查看图片属性时,看到链接地址形式变为形如:http://www.yzznl.cn/avatar/94edba5ccaf4f54d0891cf3a7b1e1280.jpg 这种样式就缓存成功了。
这种方法是园子见到的最简单的方法,当然,使用插件另当别论了。版权归 Willin Kan 所有,原文请点击这里。
小知识:什么是 Gravatar?
Gravatar 的概念首先是在国外的独立 WordPress 博客中兴起的,当你到任何一个支持 Gravatar 的网站留言时,这个网站都就会根据你所提供的 Email 地址为你显示出匹配的头像。如果你不清楚如何自定义 wordpress 头像,可以点击这里查看详细教程。
诶 问下园子 有没有那个蓝色的默认头像图标
@BroTang
不知道你说的是哪个哦。
原来还可以这样,不错,有需要再试试。
fly2top@qq.com我用这个试了不行。
很不错的方法,学习了
呵呵,园子自己似乎没有用缓存本地啊
@倡萌
缓存了
后来又改回来了。
原来是缓存呀!其实也无所谓了,我倒是喜欢用对方的网站缩略图来显示一下
不错
有时间试试!
给博主拜年啦! 博主快拿红包,哈哈
不是吧,又是该代码。有没有插件?
Willin 大师的精品之作,顶~
真给力。学习了。
不喜欢缓存,要是别人改头像了,就看不了了
来关注学习了!
国内访问我的博客还不一定比Gravatar网站快
文件用什么方式打开,不会。
这个要学习一下。
很不错。。我学习了很多
很不错。我学到了很多
先来做个沙发,呵呵!