最近 Gravatar 头像老是显示不能,google 之得一好方法。来自 Willin 方法,将 Gravatar 头像缓存到服务器,不错、够速度,故分享之。
首先在你的网站 wp-content 的同级目录建立:/avatar,权限设置:755,这是 Gravatar 的缓存路径。
准备一张适合你模板尺寸的默认头像,名为 default.jpg。
将下列代码复制到模板的 functions.php 下:
/* Mini Gavatar Cache by Willin Kan. */
function my_avatar( $email, $size = '42', $default = '', $alt = false ) {
$alt = (false === $alt) ? '' : esc_attr( $alt );
$f = md5( strtolower( $email ) );
$w = get_bloginfo('wpurl');
$a = $w. '/avatar/'. $f. '.jpg';
$e = ABSPATH. 'avatar/'. $f. '.jpg';
$t = 1209600; //設定14天, 單位:秒
if ( empty($default) ) $default = $w. '/avatar/default.jpg';
if ( !is_file($e) || (time() - filemtime($e)) > $t ){ //當頭像不存在或文件超過14天才更新
$r = get_option('avatar_rating');
$g = sprintf( "http://%d.gravatar.com", ( hexdec( $f{0} ) % 2 ) ). '/avatar/'. $f. '?s='. $size. '&d='. $default. '&r='. $r;
copy($g, $e); $a = esc_attr($g); //新頭像 copy 時, 取 gravatar 顯示
}
if (filesize($e) < 500) copy($default, $e);
$avatar = "<img title='{$alt}' alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
return apply_filters('my_avatar', $avatar, $email, $size, $default, $alt);
}
// -- END ----------------------------------------
function my_avatar( $email, $size = '42', $default = '', $alt = false ) {
$alt = (false === $alt) ? '' : esc_attr( $alt );
$f = md5( strtolower( $email ) );
$w = get_bloginfo('wpurl');
$a = $w. '/avatar/'. $f. '.jpg';
$e = ABSPATH. 'avatar/'. $f. '.jpg';
$t = 1209600; //設定14天, 單位:秒
if ( empty($default) ) $default = $w. '/avatar/default.jpg';
if ( !is_file($e) || (time() - filemtime($e)) > $t ){ //當頭像不存在或文件超過14天才更新
$r = get_option('avatar_rating');
$g = sprintf( "http://%d.gravatar.com", ( hexdec( $f{0} ) % 2 ) ). '/avatar/'. $f. '?s='. $size. '&d='. $default. '&r='. $r;
copy($g, $e); $a = esc_attr($g); //新頭像 copy 時, 取 gravatar 顯示
}
if (filesize($e) < 500) copy($default, $e);
$avatar = "<img title='{$alt}' alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
return apply_filters('my_avatar', $avatar, $email, $size, $default, $alt);
}
// -- END ----------------------------------------
上面第一行的 $size 可自定义头像大小,然后将所有 get_avatar() 改 my_avatar(),大概 functions.php,comments.php,sidebar.php,comments-ajax.php 会有头像的地方有 get_avatar() 函数,因主题而已,自行修改。
注意 my_avatar() 的方法和 get_avatar() 有一点差别:
get_avatar() 可用 id 或 email,可写成 get_avatar($comment, $size= ...
而 my_avatar() 只能用 email,要改成 my_avatar($comment->comment_author_email, $size= ...
使用参数如下:<?php echo my_avatar( $email, $size, $default, $alt ); ?>
以上转自 Willin 的新版 Gravatar 缓存,其实后面还有第二个方法,不用修改模板的,但有点小缺陷,详见该文的后续部分。

怎么换了个这么素的主题 哈哈
是該換換了,素素的清新點,呵呵。
你用 IE 的吧?應該看不到圓角效果
用webkit…看到圆角了,最近贼流行了 哈哈
新主题的效果蛮不错滴~~~
不错!!!
G-WHITE 主题就很棒啦。哈哈,这款新上的很清爽哦~
嗯,灰常稀饭gwhite,希望Alan有空再将她进化一下 哈哈
有 Bug 就反饋吧,呵呵。
国内的话还是使用缓存快些
你好,一直在用你的8700 illumine 1.2主题,但我想做些小修改,不知能否方便提供下主题的THM及其他原素材。如果方便麻烦请mail下 谢谢:)feinao#gmail.com
PS:字体你当初选用的是哪种,才能让中文较好的显示。
之前已經發過給你的啊,你查一下郵件,會不會進垃圾郵件了?
新主题不错~简洁!
弄了 还是出不来效果
@sumvo波之: 要什么效果?只是把头像缓冲到服务器而已啊
我来学习下这种效果。
@Solo:
我也学习下。
不知何故,昨天晚上按照此方法将Gravatar缓存到服务器后(除了主题文件,多修改了一个wp-recentcomments),结果今天下午空间商发邮件告知CPU占用过高
想来想去最近就改了这个,这有关系?不得以又还原,再观察看看Orz…
@剑书: 缓存只是把头像保存到服务器而已,没有其他动作了啊。当然我不知道会不会和 wp-recentcomments 有关。
PS,不过当下载头像的时候,服务器的流量会增加,难道是这个?我对服务器方面的不懂。
reply
@ripjin:
试试我的头像
试试我的头像。
再试试
最近gravatar服务器又傻逼了~~博客的头像缓冲不过来了~
请问你的代码高亮是什么插件的呢?还有为什么这一页是乱码的呢?
Codecolor 插件。哪里乱码了?
在ie8打开查看源码的时候。中文字都变成 鏈€杩?Gravatar 澶村儚鑰佹槸鏄剧ず涓嶈兘锛実oogle 涔嬪緱涓€濂芥柟娉曘€傛潵鑷
@扣剑: 这。。。我用ie8打开查看源码,正常。。
我也不知道,我用世界之窗浏览器的。也许是浏览器问题吧。
这个SNS分享蛮漂亮的,用的是代码还是插件?
@断竹挽风: 是直接写进去的代码,非插件