启用新版的Gravatar头像缓存

好久前就想这样子干的了。Gravatar头像载入那是相当的慢啊。缓存到本地服务器那是需要的。

终于提起精神,花了点时间。

启用Willin Kan的新版Gravatar头像缓存。

新版的Gravatar头像缓存

首先是在根目录下建立一个文件夹avatar,权限755。再在里面放一个默认的头像(default.jpg),没头像的童鞋就会用默认的。

然后是定义一个函数。


function my_avatar($avatar) {
  $tmp = strpos($avatar, 'http');
  $g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp);
  $tmp = strpos($g, 'avatar/') + 7;
  $f = substr($g, $tmp, strpos($g, "?", $tmp) - $tmp);
  $w = get_bloginfo('wpurl');
  $e = ABSPATH .'avatar/'. $f .'.jpg';
  $t = 2592000; //偶改为30天, 单位:秒
  if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //當头像不存在或文件超过30天才更新
    copy(htmlspecialchars_decode($g), $e);
  } else  $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
  if ( filesize($e) < 500 ) copy($w.'/avatar/default.jpg', $e);
  return $avatar;
}

接着利用add_filter来实现。

add_filter('get_avatar', 'my_avatar');

把上面两段代码都丢进主题theme下的functions.php文件就行了。

get_avatar函数

用上面的方法简单方便啊。 不过还有一步是要注意的。得要确认在调用头像的地方都是用get_avatar函数来完成的。一般都是了,只有以前老的theme才不是。不是的话改过来就行。

如改为:

<?php echo get_avatar( $comment->comment_author_email, $size = '48', $default = get_bloginfo('wpurl') . '/avatar/default.jpg' ); ?>

这样就大功告成了。载入速度果然是快了。

115 回复
  1. BoKeam says:

    用了WP Super cache还需要弄这个嘛?

    柳城 回复:

    哪东西应该没有缓存头像的吧。。

    BoKeam 回复:

    add_filter(‘get_avatar’, ‘my_avatar’);
    放在上面那段函数的后面嘛?

    柳城 回复:

    是哦。前后应该都可以吧。

    BoKeam 回复:

    我用这种方法要出错..

    柳城 回复:

    有什么错。我帮你调试。

    BoKeam 回复:

    用了这个网站就出现不能连接数据库那个常见的错误,覆盖functions.php后才能打开 [擦汗]

  2. zigbee says:

    [疑问] 我也用了Willin Kan的新版Gravatar头像缓存,奇怪的是在首页的最新评论中的头像是缓存的,在缓存文件夹中也有相应的头像,但在相应评论的页面,评论者的头像却仍然是Gravatar的链接,这是为什么呢?

    柳城 回复:

    不工作的部分就是代码不是标准的嘛。看仔细上面有说到

  3. ylsnuha says:

    我以前用的就是这个 但是感觉那些没头像的都显示一样的空白太烦了 我想要显示随机的几何图形那个 怎么让这个代码支持呢 就是没头像的话不会输出一个默认的头绪 是随机的那个

  4. 【N博客】 says:

    如何修改avatar文件建立的文件地址?我不想把avatar文件建立在跟目录下!

引用通告 & 通告

  1. […] 这个方法也是把Gravatar头像缓存到本地,是著名的Willin Kan的杰作,详细的方法请查看这里:http://liucheng.name/1428。 […]

  2. […] 转自柳城博客 THE WP ← 8-16 又一天 Leave a comment0 Comments. […]

  3. […] 这个方法也是把Gravatar头像缓存到本地,是著名的Willin Kan的杰作,详细的方法请查看这里:http://liucheng.name/1428。 […]

评论已关闭。