缓存 Gravatar 头像至本地服务器

关于缓存 Gravatar 头像的方法我早就想拿出来说一说了,该方法来自 iShawn的博客。但是用了这个方法之后,我只能缓存一半的 Gravatar 头像,所有回复的评论者的头像都没有被缓存。这个问题一直困扰着我,让我抓狂了一个多月,终有一天,showfom 小盆友一语道破了天机,让我终于完整地实现了的 Gravatar 头像缓存,深表谢意。

Gravatar 头像缓存的好处我就不多说了,直接切入正题,缓存 Gravatar 头像至本地服务器。

1、去作者主页下载该组件,解包,上传。路径随意,我放在 /gravatar 目录下。

2、gravatar 目录内应该有两个文件夹: cache 和 profile;三个文件: index.php, .htaccess, mysql.sql

3、赋予 cache 文件夹 755 权限: chmod a+w 。

4、本地新建一个 php 文件,写入以下内容,文件名 avatar.php,上传至 profile 文件夹内。请自行更改相应内容符合自己的需求。切记要放置默认头像。

<?php
$config['default'] = 'http://domain.com/default-gravatar.png';//无头像时返回的默认头像路径
$config['rating'] = 'PG';//gravatar的内容级别
$config['size'] = 64;//头像尺寸
?>

5、编辑 .htaccess 文件,默认 RewriteRule . index.php [L] ,请依照你的实际放置目录修改,比如我的是 RewriteRule . /gravatar/index.php [L]

6、打开 WordPress 模板的 comments.php 文件,查找

<?php echo get_avatar( $comment, 32 ); ?>

替换为

<img src="http://yourdomain/gravatar/cache/avatar/<?php echo md5(strtolower($comment->comment_author_email)); ?>" alt="" />

细心的同学应该会发现,路径中的 avatar 其实就是第四步创建的那个 php 文件的名字。你还可以创建不同的 Profile 应用在各个地方。

到此,Wordpress 缓存 Gravatar 至本地的操作便完成了,首次缓存的头像日后会被直接调用而无需再跑到 gravatar 查询。快就快在这里,省略查询的时间,静态化 Gravatar。

以上方法来自作者的原文:《如何缓存 Gravatar 至本地服务器》,不过很可惜,链接已经失效。不过没关系,如果觉得这还看不懂的话,showfom 小盆友写了篇更具体的:http://showfom.com/change-hosting-and-cache-gravatar/,很有参考价值。

如果做完以上步骤后发现 Gravatar 只缓存了一部分,那就有必要继续往下看了,因为你犯了一个和我一样的错误,也不能说错误,只能说疏忽。还要感谢 showfom 的提点,否则我要一直为这另一半的 Gravatar 缓存抓狂下去了。究其原因,是因为我没有用 WordPress 原生的嵌套评论,而是用 WordPress thread comment 插件代替的,问题就出在这个插件上,另一部分的头像输出是 WordPress thread comment 插件完成的,所以要解决这个问题就要进入 WordPress thread comment 插件的后台设置,找到“编辑评论的HTML”选项,将其中调用头像部分的代码也替换成:

<img src="http://yourdomain/gravatar/cache/avatar/<?php echo md5(strtolower($comment->comment_author_email)); ?>" alt="" />

这样一来,就完美地实现了缓存 Gravatar 头像至本地服务器这一功能。

  1. Pingback: Wordpress头像无法显示的解决方法 | 欢迎来到凡哥的个人主页!!

  2. Pingback: 额头wetwet | 欢迎来到【凡哥个人主页】!!!

  3. Pingback: Wordpress头像无法显示的解决方法 | 【凡哥个人主页】

  4. Pingback: Gravatar头像缓存的几种方法 | 一瞬视觉工作室

  5. Pingback: Wordpress优化(非插件篇) | 小仓のblog

  6. Pingback: Gravatar头像缓存的几种方法 | 周良博客

  7. Pingback: Gravatar头像无法显示的解决方法【集】

  8. 呵呵,
    如果加上定期自动清空缓存会更好些.
    毕竟有些人有时换了头像
    或者一些只来一次的人头像也缓存,加大了负担.

    • 因为gravatar是国外的网站,如果本地服务器每次读取gravatar头像都要跑到国外网站去,会影响速度,所以如果把gravatar缓存至本地服务器,那样会好很多

  9. Pingback: 我的Wordpress,这些一个都不能少(一) | 阿邙’S Blog

  10. Pingback: 簡易的 gravatar 頭像緩存 - Willin Kan 的博客