好久前就想这样子干的了。Gravatar头像载入那是相当的慢啊。缓存到本地服务器那是需要的。
终于提起精神,花了点时间。
启用Willin Kan的新版Gravatar头像缓存。
新版的Gravatar头像缓存
首先是在根目录下建立一个文件夹avatar,权限755。再在里面放一个默认的头像(default.jpg),没头像的童鞋就会用默认的。
然后是定义一个函数。
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 = 2592000; //偶改为30天, 单位:秒
if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //當头像不存在或文件超过30天才更新
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来实现。
add_filter('get_avatar', 'my_avatar');
把上面两段代码都丢进主题theme下的functions.php文件就行了。
get_avatar函数
用上面的方法简单方便啊。 不过还有一步是要注意的。得要确认在调用头像的地方都是用get_avatar函数来完成的。一般都是了,只有以前老的theme才不是。不是的话改过来就行。
如改为:
<?php echo get_avatar( $comment->comment_author_email, $size = '48', $default = get_bloginfo('wpurl') . '/avatar/default.jpg' ); ?>
这样就大功告成了。载入速度果然是快了。
115条回应:“启用新版的Gravatar头像缓存”
可惜我的不支持~~~
这不大可能吧。。哪方面不支持啊。
都改为get_avatar函数就支持了。。
呵呵 牛啊
哦~!这样的啊,学习鸟。。。。
不错哦,谢谢指教
这样看起来就舒服多了
技术派的就是牛啊
表示已用了一段时间了~
恩恩。我比较懒。。现在才改。 [呲牙]
怎么都是这么历害·!向你们学习了·!~
我的博客也不支持这个
不支持就改到支持。。
吼吼,来支持一个~~~~ [呲牙]
又学了一招,回去试试。
[…] 这个方法也是把Gravatar头像缓存到本地,是著名的Willin Kan的杰作,详细的方法请查看这里:http://liucheng.name/1428。 […]
在最新的文章中引用了你的方法
http://www.feiyan.info/379.html
这东西大家都熟透了。呵呵
[…] 转自柳城博客 THE WP ← 8-16 又一天 Leave a comment0 Comments. […]
一直没有注意头像缓存的申请·今儿就看着你的教程研究下··
我没研究。呵、只是直接拿过来用。不过因为我是用的老theme,需要先改些地方而已
又来观摩下柳哥的新作。。 [呲牙]
我也觉得 Gravatar 现在相当缓慢啊。不过这个方法暂时不会用。看起来挺复杂,得不偿失吧。 [大兵]
嘿。。没有比这更简单的了。
额,我很早已经把这个改成插件发表了 ~
呵呵。才几句代码。就不用插件了。
改代码麻烦,就奔着小邪的代码而去好了。
对了。发现你的这个插件已经过时了,需要更新一下。 [呲牙]
还好。是我看错了。嗬嗬。
如此,如此,
牛×。。。
今天流行这个啊,考虑三秒,我还是跟一下流行吧 [呲牙]
最近忙啥。。 是不是生意很好。。
地方节日,很忙.持续一个星期,搞得我严重的睡眠不足.从这个星期六结束了.
那要是访客越来越多 到最后 你可扛得住 哦 Soga!
都是小图。。 [得意]
我的typecho 不知道是否可以实现!
没用过tylecho
啥时候测试下!嘿嘿。
早用早知道哈哈~
我发现柳城大哥好强。什么都是高手。真妒忌你。呵呵
我也学了一招……我得试试……
话说能不能缓存到非博客空间?
$w = get_bloginfo(‘wpurl’);
–> $w = “http://xxx.org”;
行的通?
可以的。。改改代码就行了。。都是代码嘛,没有不行的。
学习了,很强大
用了WP Super cache还需要弄这个嘛?
哪东西应该没有缓存头像的吧。。
add_filter(‘get_avatar’, ‘my_avatar’);
放在上面那段函数的后面嘛?
是哦。前后应该都可以吧。
我用这种方法要出错..
有什么错。我帮你调试。
用了这个网站就出现不能连接数据库那个常见的错误,覆盖functions.php后才能打开 [擦汗]
[…] 这个方法也是把Gravatar头像缓存到本地,是著名的Willin Kan的杰作,详细的方法请查看这里:http://liucheng.name/1428。 […]
前来观看新作
学习了。不错。
这两天Gravatar的 0,1确实不稳定,正在考虑本地缓存的问题
这必须在linux主机上使用哦~
我点~~
我和你一样都用的这个
额 原来你原来都没用啊 呵呵 早该开启的了
是呀。做技术好呀
哇哇,正在找呢,这两天Gravatar头像确实N慢啊。。 [可爱]
支持一下 [强]
这样是很快会加快速度的。
支持。。
支持6W名的 柳城
写不错,加油支持一下
支持加学习! [强]
大哥很强大,菜鸟学习了,去研究去了
只要网速快,不缓存也没关系。
好博客,收藏了。HOHO
路过。。。支持一下!
我的还不知道支持不支持了
我不想采集。。。空间可怜
不错,有空我也试试。
可惜我的博客用不上~~我也想用啊! [流泪]
怎么可能用不上呢~~
我的是ASP程序,不知如何添加~
asp我也不懂。。
按照思路用asp写出来也是一样的
回去试试看
是个非常好的办法,等空下来也修改成缓存~
很火啊,我也试试
博主是不是准备又出个插件哦
不错啊,支持下
不错不错 新人学习了
在俺的小站 http://www.haoideas.com 上已经生效了
学习了
支持一下子
顶
不错哦 回去试试看~
用了很长时间了,但我用的不是willin的了。今天gravatar又抽风了……
柳大哥在这方面是高手呀。呵呵
用了很长时间啦
正是用的这个~
WP3.01的头像很慢~我把它修改为以前的头像地址~~感觉快了很多~ [呲牙]
感谢你的分享,特佩服能鼓敲的牛人
柳城好厉害….我改代码去 [呲牙]
立竿见影,刷新一下avatar目录下就N多图片了 [强]
我的怎么就不行呢?
comment_author_email, $size = ’48’, $default = get_bloginfo(‘wpurl’) . ‘/avatar/default.jpg’ ); ?>
这段代码应该加到那个文件里?
这个不是加。是要修改。。comments.php 这个文件吧。只是参考
支持个,学习下,等下去折腾我的博客去
zww之前一直在博客上写相关的文章,当时我没太在意。原来缓存头像是为了载入速度快啊。。那改天我也试试。。。
记得童鞋以前写了WP的插件,对吧
在学php嘛。
我的公司改版了。
改了有问题 就没用·
[疑问] 我也用了Willin Kan的新版Gravatar头像缓存,奇怪的是在首页的最新评论中的头像是缓存的,在缓存文件夹中也有相应的头像,但在相应评论的页面,评论者的头像却仍然是Gravatar的链接,这是为什么呢?
不工作的部分就是代码不是标准的嘛。看仔细上面有说到
占空间。。。 [可怜]
我以前用的就是这个 但是感觉那些没头像的都显示一样的空白太烦了 我想要显示随机的几何图形那个 怎么让这个代码支持呢 就是没头像的话不会输出一个默认的头绪 是随机的那个
柳哥的插件 越来越强了。。 以前还没注意 学习了 [抱拳]
嗯不错不错,我也去试一下缓存用户头像。
我的模板在comment.php里面用到的是这个函数,怎么修改啊?好像不是get_avatar了。
那就修改为get_avatar就行了。get_avatar的用法大把教程哦
确实是非常棒,不过我用了一个新浪微博登录的插件,导致头像出错了
还有就是豆瓣连接也不能用了,只好把两个插件都停了。。 [流泪]
这个可以试一下呀……
谢谢博主的分享!我的小博客也使用个这个方法,很成功^_^ :)
我的博客不用插件缓存头像也可以很快载入。修改gravatar地址就行了
谢谢博主的分享!
本文详细出处参考:dkjfn
dkjfn
如何修改avatar文件建立的文件地址?我不想把avatar文件建立在跟目录下!