2010.7.5 Update: willin升级了代码,更加方便,直接移步到这里》http://kan.willin.org/?p=1277 或者这里》https://zww.me/archives/25296
--------------------------
其实这个功能有很多种方法实现,有插件,有 showfom 的 《更换空间 + 再次提速之 Gravatar 头像缓存》,但 showfom 的方法对于使用 wp_list_comments() 不太方便而且比较麻烦。所以我选择了 Willin 的简单方法。具体的原理和方法请到 Willin 的原文章:传送门
这里我只说步骤,因为我 CP 党(CopyPaste党),所以方法自然就是 CP 级的了,也就简单易懂啦。
前提:
确定自己的模板主题文件 comments.php 用的是 WordPress 2.7 以后才有的 wp_list_comments()
开始:
1. 在 wp-content 的同级目录建立文件夹:avatar,权限为:755, 这是准备 gravatar 缓存的路径
2. 把一个50×50的jpg图片改名为:default.jpg,把它存到第1步建立的 gravatar 缓存文件夹 avatar 里面
3. 找到主题文件 comments.php 或是在 functions.php 里的 function mytheme_comment($comment, $args, $depth) 会有一段像下面这样一段代码:
<?php echo get_avatar($comment,$size='50',$default='<path_to_url>' ); ?>
替换成:
<?php
$p = 'avatar/';
$f = md5(strtolower($comment->comment_author_email));
$a = $p . $f .'.jpg';
$e = ABSPATH . $a;
if (!is_file($e)){ //当头像不存在就更新
$d = get_bloginfo('wpurl'). '/avatar/default.jpg';
$s = '32'; //头像大小 自行根据自己模板设置
$r = get_option('avatar_rating');
$g = 'http://www.gravatar.com/avatar/'.$f.'.jpg?s='.$s.'&d='.$d.'&r='.$r;
copy($g, $e);
if ( filesize($e) == 0 ){ copy($d, $e); }
};
?>
<img src='<?php bloginfo('wpurl'); ?>/<?php echo $a ?>' alt='' class='avatar' />
3. 没有了,简单不?
补充:
1. 如果你的主题比较老,在 comments.php 有下面这字段(function.php 没有自定义评论样式)
<?php echo get_avatar( $comment, 48 ); ?>
替换为:
<?php
$p = 'avatar/';
$f = md5(strtolower($comment->comment_author_email));
$a = $p . $f .'.jpg';
$e = ABSPATH . $a;
if (!is_file($e)){ //當頭像不存在就更新
$d = get_bloginfo('wpurl'). '/avatar/default.jpg';
$s = '48';//头像大小 自行根据自己模板设置
$r = get_option('avatar_rating');
$g = 'http://www.gravatar.com/avatar/'.$f.'.jpg?s='.$s.'&d='.$d.'&r='.$r;
copy($g, $e);
if ( filesize($e) == 0 ){ copy($d, $e); }
};
?>
<img src='<?php bloginfo('wpurl'); ?>/<?php echo $a ?>' alt='' class='avatar' />
2. 如果你用的是 MG12 的 Elegant Box 主题,那么,打开 function.php,找到下面这句:
echo '<div class="userpic">'; echo get_avatar($comment, 24); echo '</div>';
替换为:
$p = 'avatar/';
$f = md5(strtolower($comment->comment_author_email));
$a = $p . $f .'.jpg';
$e = ABSPATH . $a;
if (!is_file($e)){ //當頭像不存在就更新
$d = get_bloginfo('wpurl'). '/avatar/default.jpg';
$s = '24'; //头像大小 自行根据自己模板设置
$r = get_option('avatar_rating');
$g = 'http://www.gravatar.com/avatar/'.$f.'.jpg?s='.$s.'&d='.$d.'&r='.$r;
copy($g, $e);
if ( filesize($e) == 0 ){ copy($d, $e); }
};
echo '<div class="userpic">'; echo '<img src="'; echo bloginfo('wpurl'); echo '/'; echo $a; echo '" class="avatar" /></div>';
3. 如果你用的是 MG12 的大名鼎鼎的 iNove 主题(测试版本是1.4.6),那么打开 function.php,找到:
<?php if (function_exists('get_avatar') && get_option('show_avatars')) { echo get_avatar($comment, 32); } ?>
替换为:
<?php if (function_exists('get_avatar') && get_option('show_avatars')) { //echo get_avatar($comment, 32); $p = 'avatar/'; $f = md5(strtolower($comment->comment_author_email)); $a = $p . $f .'.jpg'; $e = ABSPATH . $a; if (!is_file($e)){ //當頭像不存在就更新 $d = get_bloginfo('wpurl'). '/avatar/default.jpg'; $s = '32'; //头像大小 自行根据自己模板设置 $r = get_option('avatar_rating'); $g = 'http://www.gravatar.com/avatar/'.$f.'.jpg?s='.$s.'&d='.$d.'&r='.$r; copy($g, $e); if ( filesize($e) == 0 ){ copy($d, $e); } }; echo '<img src="'; echo bloginfo('wpurl'); echo '/'; echo $a; echo '" class="avatar" />'; } ?>
如果还有其他主题,我会陆续放上
注意:有些主机的特殊性可能无法使用这个功能,可以先试试插件能否成功运行再测试这个简单代码
- 本文标题:willin 的简单 gravatar 头像缓存
- 本文链接:https://zww.me/archives/24711
- 发布时间:2009年11月19日 15:10
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
你这个更新狂..
很好,是不是知道我最近想折腾缓存头像特意准备的
因为麦兜说过想,就写一下
我来过了哦,哈哈,早吧?
简单,我就喜欢简单的
简单多好啊
很好,可惜我用不上.
呵呵,你的是asp的吧
终于分享出来啦,我要去试一试!
楼上那个集团电话,貌似到处给人留言啊,刚才在我这里。
那显然是spamer
囧,貌似我没有在我的主题文件里找到类似的第二段代码。到时再请教你吧!
群里找我行了
看了你的文章,我也忍不住要弄了,升级后这也也是要从新弄的吧?
升级?这个是针对主题ide
我要去试一试
一头雾水,看来我领悟力不够啊
这个……我无语
看了你的文章,我也忍不住要弄了
真的管用吗?
不管用那我这里的缓存效果是怎么回事?
管用,我头像换了好几天了,这儿都还是原来的脑袋。
已更新,哈
容易上手.收藏起来先
试试效果
avatar =。=
我很期待這部電影的說 哈哈
comments.php 没有 在 functions.php 里面只有几行代码也没有!囧…………算了,不弄了,呵呵,我的模板比较特殊
久酷如果要弄的话可以找我,
我也觉得你是更新狂。。。
那我继续发扬好了
嗯 阿凡达还是要缓存好
不用缓存还真的会拖慢速度
我嫌麻烦,直接安装了个缓存插件。
嗯,懒人方法
一个插件搞定……
你不是自己diy么?