之前就给用 WordPress 的朋友介绍过缓存 Gravatar 头像至本地服务器的方法,但是我当时介绍的方法仅适用于 WordPress 2.7 之前的主题,不过貌似 WordPress 2.7+ 以后,被引进了 wp_list_comments 这一函数(具体啥时候被 WordPress 小组引进的我没有仔细研究过~),以前的头像缓存到本地的方法就不再适用了。我也一直没有注意这个问题,直到我自己把林子的 D&Z 主题升级到支持 wp_list_comments 后才发现这个问题,然后就急于寻求新的 Gravatar 头像缓存的方法。
首先找到了兽兽的方法,看是看懂了,不过折腾了半天没折腾成功,郁闷,悟性高的童鞋可以看下:http://zou.lu/change-hosting-and-cache-gravatar/
后来又找到了荒野无灯的方法,这家伙和Willin大师一样,超D调的,现在我明白了,真正的牛人都是不坑声的,崇拜一下。传送门:http://www.hacklog.cn/wordpress/wpskills/cache-gravatar-and-speed-up-your-blog.html
其实 Gravatar 头像缓存的前五步和《缓存 Gravatar 头像至本地服务器》中提到的方法是一样的,我重新整理了一下,comments.php 里用 wp_list_comments 函数的同学缓存头像方法如下:
1、去作者主页下载该组件,解包,上传。路径随意,我放在 /gravatar 目录下。
2、gravatar 目录内应该有两个文件夹: cache 和 profile;三个文件: index.php, .htaccess, mysql.sql
3、赋予 cache 文件夹 755 权限: chmod a+w 。
4、本地新建一个 php 文件,写入以下内容,文件名 avatar.php,上传至 profile 文件夹内。请自行更改相应内容符合自己的需求。切记要放置默认头像。
$config['default'] = 'http://domain.com/default-gravatar.png';//无头像时返回的默认头像路径
$config['rating'] = 'PG';//gravatar的内容级别
$config['size'] = 64;//头像尺寸
?>
5、编辑 .htaccess 文件,默认 RewriteRule . index.php [L] ,请依照你的实际放置目录修改,比如我的是 RewriteRule . /gravatar/index.php [L]
6、修改 wp-includes/pluggable.php:
大概在1523行处有一个
/**
* Retrieve the avatar for a user who provided a user ID or email address.
*
* @since 2.5
* @param int|string|object $id_or_email A user ID, email address, or comment object
* @param int $size Size of the avatar image
* @param string $default URL to a default image to use if no avatar is available
* @param string $alt Alternate text to use in image tag. Defaults to blank
* @return string <img> tag for the user's avatar
*/
function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
if ( ! get_option('show_avatars') )
return false;
if ( false === $alt)
$safe_alt = '';
else
$safe_alt = esc_attr( $alt );
if ( !is_numeric($size) )
$size = '96';
$email = '';
if ( is_numeric($id_or_email) ) {
$id = (int) $id_or_email;
$user = get_userdata($id);
if ( $user )
$email = $user->user_email;
} elseif ( is_object($id_or_email) ) {
if ( isset($id_or_email->comment_type) && '' != $id_or_email->comment_type && 'comment' != $id_or_email->comment_type )
return false; // No avatar for pingbacks or trackbacks
if ( !empty($id_or_email->user_id) ) {
$id = (int) $id_or_email->user_id;
$user = get_userdata($id);
if ( $user)
$email = $user->user_email;
} elseif ( !empty($id_or_email->comment_author_email) ) {
$email = $id_or_email->comment_author_email;
}
} else {
$email = $id_or_email;
}
$host = 'http://www.yourdomain.cn'; //注意这里要修改为你的博客的地址
if ( !empty($email) ) {
$out = "$host/gravatar/cache/avatar/";
$out .= md5( strtolower( $email ) );
$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
} else {
$avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
}
return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);
}
endif;
OK,搞定,这篇文章已经被拉得老长了,不再啰索,收声~
-
缓存 Gravatar 头像至本地服务器2009年09月2日 -
QQ 自定义头像+Gravatar 头像缓存2010年04月6日 -
Wordpress gravatar 头像缓存补充说明2010年01月19日 -
Wordpress 侧边栏带头像的最新评论2009年12月26日
Pingback: Gravatar头像本地缓存|修改get_avatar()函数 | 自力博客
玩戈兄现在用的什么方法?我想弄了,总是拖得我站速度打不开下半部分
客气客气,能用上就好
gravatar 头像又挂了
那还不快快用上缓存,用上缓存,万事无忧
外国主机是不是照样缓得好好的?
缓存,国内外主机通用的
被X前就都一样可以缓了。
我应该没理解错吧
恩恩,就是这个意思
下午打开时极度缓慢。
万哥,你这个和WILLAN大师的那个MINI版哪个更爽?我用你这个没有搞定,用那个搞定了,但是Ajax评论的时候,没刷新前头像是默认的。还有,记录访客信息前的头像,也是默认的…没明白…
willin的更好用吧,我现在自己也是用他的方法了,呵呵
可以试试
Pingback: 整理评论头像不显示方法
Pingback: 上网记 » Blog Archive · story.tc
Pingback: 三个方法解决Gravatar头像不显示的问题 | 分享互联
搞定了 谢谢老万以及各位D调的大牛
换了3.01 重定向也失效了
这么快搞定啦,你理解能力真够强呀
呵呵 你写的那么详细了
不过我把catch的属性改为777了
提高速度不错~
头像缓存我还不太会用
Pingback: 我的Wordpress,这些一个都不能少(一) | 阿邙’S Blog
现在是如何清除缓存。
删除cache文件夹下的文件
费解啊,为什么一定要缓存到本地呢?又费流量又费空间。
很多人热衷于介绍这个技术。
因为缓存到本地并不会浪费多少流量和空间,但是却可以明显提高载入速度哟
要hack pluggable.php文件的始终不是好方法啊,一直用着shawn大师介绍的那种,真真的缓存各种尺寸的头像图片哈
shawn大师介绍的方法好像只对2.7+主题以前的有用,我也试过了
你也用上了呀?呵呵,可以提速不少吧
试试试试!
欢迎尝试,记得备份哦~
办法不错,一直本地缓存的~~
头像缓存的方法有很多了,但是原理都一样,大同小异罢了
Willin大师那个一直可以用,也比较简单。。
willin大师的是精品,代码超精简,我这里只是给出了另一种可行的方法
zblog 应该怎么做呢 ?
我对z-blog没有怎么研究过,这还真不知道呢~
好长的码子
呵呵,唬人的,照搬照抄就行啦~
这个用代码实现,还不错
是啊,我比较排斥使用插件,嘿嘿
我也很懒
不想折腾了~
呵呵,你折腾的已经不算少了~
性开放的后果,发到博客里去了!
。。。。。。我以为你说什么呢,头像缓存和性开放有什么关系
去看了才知道原来是宣传你的文章呀~
学习了~呵呵~
是新朋友吧,要常来哈~
呵呵,我刚从他的博客过来的。。。
呵呵,是第一次来小站吧,欢迎啊~
呵呵,是的,以后一定常来。。
华丽的飘过。。。
飘呀飘,飘过留印就行~
现在又好了.. 你上QQ一下
这个我就不折腾了!我是懒人一个!
等gravatar被墙的时候,你一定会需要这个方法的,哈哈
不会哦!gravatar只是一些头像而已,应该不会哈!
如果有叉叉限制级的头像咧?GFW是让人琢磨不透的,还是未雨筹谋一下,呵呵
确实也是哈,回头努力丰衣足食下!嘿嘿。借用你的图像了!嘿嘿
呵呵,尽管拿去,很可爱吧这套~
老万,发现你这,评论者 的链接转向 不能打开 只转到你的url上,
你肯定是用拖动的吧?
直接点击或者右键在新标签页打开试试~
我是直接点击的啊,刚才点超人的 url转到你首页了
我点了下超人的,很正常啊,没有跳到我的首页。。。
还没关注头像缓存!
可以关注一下啦,哪天gravatar也被墙了,你就会发现其重要性了
是的,恐怖的杯具还没来!
暂时还未研究到这块~
万哥能做个链接么,上星期链上你了
谢谢看的起小站,不过不好意思啊,小站暂不招链哟~
willin大师的不就可以了么?我从一开始折腾自己主题用的就是wp_list_comments,我现在用的就是willin的方法
willin大师自创的小G居说是最小的头像缓存方法了,不过我还没仔细研究过,一个一个来,等会试试看
Gravatar 头像保存到本地确实很好,那样页面打开速度又可以快一些了~
恩恩,是滴,所以我很早就缓存了gravatar头像
万哥又想来害我了..上次就这个家伙还我还原了.诶. 忍不住我又要来试试
那就用插件吧,虽说插件影响效率,但缓存到本地读取 还算可观的, 我早知道不行
因为我够“贱”
不是给你说过我实践过么 呵呵,还有以前老万 说的GZIO压缩JS CSS等 我也试验出 同一主机下 安装多个WP程序会导致某一个 的样式读取不出。 要说折腾 老万可能还比不上我
。。笔记本键盘没习惯 GZIP打错了
哈哈,你肯定是哪里改错了吧,原因不明~
我决定用兽兽推荐的插件~~~不折腾了~
兽兽太可恶,跑到我的地盘抢生意,把他的留言spam掉!
现在不用这么麻烦了 一个插件搞定:
http://philna.com/2009/10/cache-avatar/
而且是全局的,后台的头像也缓存了。
NO,我拒绝
我知道,你是完美主义者,能不通知插件就不用的。
哈哈,还是你了解我,比起插件,我更喜欢玩代码,嘿嘿
这和whisperer介绍的有什么不同吗
原理是一样的,实现的方法稍有区别,至少前五步肯定相同
又动了WordPress的程序文件……偶主题采用的是评论functions自定义回调方式,直接那里改,HOHO
我改来改去改不好,索性改程序文件了,反正改了很多,也不差这个了~
chrome+GR插件=沙发专业户!
chrome的GR插件有这么快吗?我的FF插件还没通知呢
畢竟是Google的東西嘛 當然快啦