WordPress Gravatar 头像缓存的几种方法

Gravatar,全称是「Globally Recognized Avatar」,Wordpress 等主流博客系统,基本都是采用 Gravatar 头像。

最近周良穿梭与各个博客之间,发现很多博客的 Gravatar 评论头像无法显示,貌似是被墙了,不知道大家有没有遇到这种情况,周良这里已经惨不忍睹了…

所以,本文将提供几个缓存 Gravatar 头像的方法,这样不仅可以防止头像被墙,也可以提高自己网站的载入速度。

一、使用插件缓存 Gravatar 头像

插件1:Gravatar China

(下面列举了此插件的一些功能,并附上后台设置截图)

  • Gravatar 头像防墙补丁:替换 Gravatar 头像能正常访问的地址;
  • Gravatar 本地缓存:对特殊的网络环境下给头像进行本地缓存;
  • 自定义设置缓存过期时间;

wp-recentcomments 插件

插件2:WP Gravatar Mini Cache

  • 迷你 Gravatar 头像缓存插件;
  • 可以将 Gravatar 头像缓存至本地,以加快加载速度,使其不受 Gravatar 服务器连接速度的影响;
这两个插件都是国内高手写的头像缓存插件,当然都是中文的。周良没有使用这2个插件,前者的后台设置比后者丰富,后者完全是傻瓜型,安装启用后即可看到效果!
 

插件3:Gravatar Local Cache

  • 纯英文操作
  • 一键完成头像缓存

周良使用的是 gravatarlocalcache 插件,后台很简单,无需改动什么,直接点击Update Options » 即可

这个应该比 WP Gravatar Mini Cache 简单多了,适合懒人或者Wordpress新手…

二、使用代码实现 Gravatar 头像缓存

这个方法是周良无意间在网上看到的,据说效果不错。如果您愿意花几分钟操作的话,那么就接着看下去吧。

  1. 先在网站 wp-content 的同级目录建立资料夹: /avatar 权限:755, 这是准备 gravatar 缓存的路径
  2. 准备一张适合你模板尺寸的默认头像, 名为"default.jpg" 放在此路径
  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(‘url’). ‘/avatar/default.jpg’;
$s = ’50′;
$r = get_option(‘avatar_rating’);
$g = ‘https://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 echo $a ?>’ alt=” />

对一些主题,这样做之后,可能会使头像没法显示。

这时只要简单的把 $p = ‘avatar/’改成 $p = ‘/avatar/’

上述修改代码的方法,仅仅对文章页面的评论有效.

如果您使用了 wp-recentcomments 插件,或是 WordPress thread comment,想知道他们如何缓存头像到本地。可以看看下面的两篇文章。

万戈:缓存 Gravatar 头像至本地服务器——提供了WordPress thread comment解决头像缓存的办法。

whisperer:全面启用gravatar头像缓存——提供了wp-recentcomments头像启用缓存的方法。