Old

willin 的简单 gravatar 头像缓存

2010.7.5 Update: willin升级了代码,更加方便,直接移步到这里》http://kan.willin.org/?p=1277 或者这里》http://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. 如果你用的是 MG12Elegant 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" />'; } ?>

如果还有其他主题,我会陆续放上

注意:有些主机的特殊性可能无法使用这个功能,可以先试试插件能否成功运行再测试这个简单代码

zww
or
oooo

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/24711

137 comments

  1. A.shun A.shun

    你这个更新狂.. :shock:

    很好,是不是知道我最近想折腾缓存头像特意准备的 :oops: :oops: :oops:

    沙发
  2. 集团电话 集团电话

    我来过了哦,哈哈,早吧? :mrgreen:

    板凳
  3. 万戈 万戈

    简单,我就喜欢简单的

    地板
  4. ......
  5. FORECE FORECE

    刚才照你的修改了一下。发现需要把AVATAR文件夹放在根目录下才可以。。不然就会出现错误。

    61楼
    • zwwooooo zwwooooo

      @FORECE 大部分人的wp都是安装在根目录,wp-content文件夹就在根目录,所以正常啊,avatar就在根目录,没错。
      注意:avatar是跟wp-content同目录,不是在wp-content目录下

    • FORECE FORECE

      @zwwooooo 汗,我没注意。这话说的这么有技巧。。。

    • zwwooooo zwwooooo

      @FORECE 你不够细心读文章而已。 :mrgreen:

  6. 梦幻弧光 梦幻弧光

    您好,冒昧的打扰了,我试着更改了文件,模仿了iNove 主题的代码,可惜不能使用。代码如下:

    63楼
  7. 梦幻弧光 梦幻弧光

    我使用的是Blocks主题,相近的也就是iNove 主题的代码了,不过又有些区别,不懂语言神马的(纯属CP党,所以无法调教成功)

    64楼
  8. 蓝色离子 蓝色离子

    有人头像是png格式的咋办!

    65楼
  9. xxfs91 xxfs91

    留言留念.......

    66楼
  10. Google地球 Google地球

    我的主题太特殊了咋整??
    comments.php 或是在 functions.php 里的

    没有那段代码...但是我很需要这个缓存。头像是我主题的重要组成部分。求解...

    67楼
  11. mack mack

    我的网站上面一直没有弄这个“gravatar头像缓存”,我看了一下,缓存与不缓存的看不出有什么差别,所以请允许我提问:gravatar 头像缓存有什么优点?或者好处?

    68楼
  12. 静思学吧 静思学吧

    gravatar头像确实需要缓存,非常不错的文章.学习了.

    69楼

Leave a Reply