Old

willin 的简单 gravatar 头像缓存

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. 如果你用的是 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文章均为原创,转载请以链接形式标明本文地址
本文地址: https://zww.me/archives/24711

137 comments

  1. A.shun A.shun Opera 10 Opera 10 Windows XP Windows XP

    你这个更新狂.. :shock:

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

    沙发
  2. 集团电话 集团电话 Internet Explorer 6 Internet Explorer 6 Windows XP Windows XP

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

    板凳
  3. 万戈 万戈 Firefox 3 Firefox 3 Windows XP Windows XP

    简单,我就喜欢简单的

    地板
  4. ......
  5. FORECE FORECE Firefox 3 Firefox 3 Windows 7 Windows 7

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

    61楼
    • zwwooooo zwwooooo Firefox 3 Firefox 3 Windows 7 Windows 7

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

    • FORECE FORECE Firefox 3 Firefox 3 Windows 7 Windows 7

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

    • zwwooooo zwwooooo Firefox 3 Firefox 3 Windows 7 Windows 7

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

  6. 梦幻弧光 梦幻弧光 Firefox 3 Firefox 3 Windows 7 Windows 7

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

    63楼
  7. 梦幻弧光 梦幻弧光 Firefox 3 Firefox 3 Windows 7 Windows 7

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

    64楼
  8. 蓝色离子 蓝色离子 Google Chrome 10 Google Chrome 10 Windows XP Windows XP

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

    65楼
  9. xxfs91 xxfs91 Firefox 5 Firefox 5 Windows XP Windows XP

    留言留念.......

    66楼
  10. Google地球 Google地球 Google Chrome 13 Google Chrome 13 Windows 7 Windows 7

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

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

    67楼
  11. mack mack Internet Explorer 9 Internet Explorer 9 Windows 7 Windows 7

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

    68楼
    • zwwooooo zwwooooo Firefox 10 Firefox 10 Windows 7 Windows 7

      @mack
      gravatar服务器在国内经常抽的,为什么抽呢?你懂的。

  12. 静思学吧 静思学吧 Firefox 12 Firefox 12 Windows XP Windows XP

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

    69楼

Leave a Reply