2009年11月19日 137条评论

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

“willin 的简单 gravatar 头像缓存”有137条评论

  1. Vicia says:

    还有专门针对iNove的,真是好人。 :mrgreen:

    1. zwwooooo says:

      因为帮了麦田修改了Elegant Box,想到mg12的主题一样结构差不多就贴出来了

  2. 先看看 says:

    貌似还比较复杂呢

    1. zwwooooo says:

      因为主题太多太杂,所以修改起来还真是很复杂。

  3. 翔子 says:

    有时间好好折腾下 `

  4. 先收藏了慢慢学习。

  5. 小搓板 says:

    又是看不懂的代码. 我愁.. :!:

    1. zwwooooo says:

      看不懂就坐坐沙发。

  6. 小T says:

    不晓得这个又能提多少速度 :razz:

    1. zwwooooo says:

      提速是明显的

  7. 这么实用的东西,可惜我是用不上了。

  8. huangjun says:

    貌似在别的博客里也看到类似的教程列~

    1. zwwooooo says:

      类似的方法很多,不过这里说的方法原创是willin

  9. 林木木 says:

    我这主题也不知咋的,曾经试过,就是出错……现在用另外一种方法,万戈那淘来的

    1. zwwooooo says:

      不能本地测试哦,直接在服务器上应该可以的

  10. 铵铵 says:

    :oops:
    老早就用上了.

    1. zwwooooo says:

      我也老早用上了,只是觉得自己这里也放上,起码是简体的 :lol:

  11. 阿修 says:

    我用的好像是这个吧……忘记了

    1. zwwooooo says:

      你肯定和我一样是CP党!嘿嘿

      1. 阿修 says:

        CP多有意思……最少的时间达到想要的效果~~ :grin:

  12. 学习了。谢谢

  13. Hobo says:

    我空间很慢就不缓存在本地了

  14. 小农夫 says:

    很实用的文章,收藏

  15. 1超人 says:

    我用此方法就没成功过~

    1. zwwooooo says:

      因为你没改对,又或者你的主机写权限什么的问题

  16. 619 says:

    暂时用不上!不过还是感谢分享!
    以后定有用得上的时候。 :mrgreen:

    1. zwwooooo says:

      呵呵,你的博客就像一个文本

    2. Jutoy says:

      @619
      619凶悍的裸奔CSS主题…

  17. 疾风 says:

    这个很有用啊,收藏个 有空给弄弄

  18. LAONB says:

    我开始就没弄明白,因为我是inove的山寨版,别的代码我都摸透了,就是模板看着眼前一黑,一直没去解剖它。
    刚好你发了这么实用的 :grin:

    1. zwwooooo says:

      哈哈,能把inove山寨也很厉害啊

  19. LAONB says:

    第一步成功了,头像缓存了。
    顺便提醒,“把一个50×50的jpg图片改名为:default.jpg”
    大小要根据情况而定,我的是32 :lol:

    1. zwwooooo says:

      我文章里也说了啊——虽然是后来补上的 :grin:

  20. 吖Bee says:

    这个我用插件了

发表评论

昵称 *

网址

B em del U Link Code Quote