Gravatar头像无法显示的解决方法【集】

引言

在 WordPress 2.5 之前,要想实现在 WordPress 博客中显示 Gravatar 头像,一般是需要特殊插件的。从 2.5 版本之后,WordPress 内置了这个功能。通过这个功能我们可以在任意支持 Gravatar 的博客中回复留言是使用自己设定的头像,只要你提前在 Gravatar 网站上设置你的头像,并在留言时填写你的邮箱地址。

这段时间 WordPress 3.0 及以上版本的博客中,Gravatar 头像均无法显示。因为为了优化性能,减轻对 Gravatar 主站 http://www.gravatar.com 的访问压力,WordPress 自 3.0 版本开始改为访问 Gravatar 的缓存服务器,一般为 http://0.gravatar.comhttp://1.gravatar.comhttp://2.gravatar.com ……。头像无法显示的原因,有人说是 Gravatar 的 CDN 出现了故障,也有人说是 GFW 把除 http://www.gravatar.com 之外的所有缓存服务器都给墙了。无论原因是什么,问题总要解决的。而解决的办法大都是围绕着更改 *.gravatar.com 为 www.gravatar.com 进行的。

下面就是我从网上搜集的各种解决办法,我把它们都集中在这里供大家参考选择。

解决方法一、最常见的就是直接修改 WordPress 源码

在 wp-include 目录下找到 pluggable.php 文件,在第 1645 行找到以下代码 (wp-includes/pluggable.php:1645):

if ( is_ssl() ) {
    $host = 'https://secure.gravatar.com';
} else {
    if ( !empty($email) )
        $host = sprintf( "http://%d.gravatar.com", ( hexdec( $email_hash{0} ) % 2 ) );
    else
        $host = 'http://0.gravatar.com';
}

然后将以上代码替换为:

if ( is_ssl() )
    $host = 'https://secure.gravatar.com';
else
    $host = 'http://www.gravatar.com';

不过,我个人不推荐这种方法。因为这样为以后升级 WordPress 带来了麻烦,升级后这些修改将失效。每次升级都要把以前修改的地方重新修改一遍,除非你不再升级 WordPress 。

解决方法二、使用插件 Gravatar Fixed

该插件的作者是 Neekey。该插件“通过函数覆盖的方式,重新自定义 Gravatar 服务器,直接读取 www.gravatar.com 的内容,保证正常访问”。

Gravatar 头像修正

其中,Gravatar SSL 服务器仅适用于 WordPress 开启 SSL 访问时才起作用。

该插件可以方便地修改 Gravatar 的网址,而无需修改 WordPress 源码。推荐此方法。

插件页面:Gravatar Fixed 头像修正插件

下载链接:gravatar-fixed.zip

解决方法三、将 Gravatar 头像缓存至博客主机

此方法是将头像保存在博客所在服务器,需要时从博客所在的服务器调用头像进行显示。而缓存的过程是通过博客所在的服务器去访问 Gravatar.com 。所以,只要你的博客所在服务器能访问 Gravatar 服务器就可以使用此方法。如果你的博客放在国内主机上,此方法不一定适用你。但只要参考第一种解决方法,此方法就可以适用于所有国内国外主机了。

这种方法的由来,并不是专门针对这次事件,而是在此之前,有博友为了减少站外请求,提升速度和稳定性而想出的办法。

这种方法在很多认定博客里都有提到,比如 Shawn《如何缓存 Gravatar 至本地服务器》万戈《缓存 Gravatar 头像至本地服务器》,甚至早就有插件已经实现该功能,最著名的就是 Gravatar2 了。还有一个要提到的就是 Willin Kan 大师。他在《簡易的 Gravatar 頭像緩存》中介绍一种更简单的方法,并在《新版 Gravatar 緩存》中再次改进了它。Willin Kan 大师提供的方法,代码量少,改动简单,有兴趣的同学可以传送过去看看。我在这里就不详谈了。

而接下来我向大家推荐的一个轻量级的插件就是源自 Willin Kan 大师的那篇博文

特别推荐:插件 WP-Gravatar-Mini-Cache

插件 WP-Gravatar-Mini-Cache V1.0.2,是由小邪同学出品的一款非常轻量级的插件,并已被官方收录。“迷你 Gravatar 头像缓存插件,可以将 Gravatar 头像缓存至本地,以加快加载速度,使其不受 Gravatar 服务器连接速度的影响”。该插件只有 57 行代码,其中有效代码只有 20 行左右,其他为介绍文字和版权信息。如此小巧的插件,称为 “Mini” 绝对不过分。该插件使用的是 Gravatar 的主站 http://www.gravatar.com,所以国内外的主机均可使用。为了更高的效率,该插件并没有提供后台控制选项,而是通过直接修改插件的代码来修改选项。不过也正因为其小巧,所以修改起来并不复杂。具体细节请看插件说明。

这是我最推荐的一种方式。但作者在博客中提到即将升级的 V1.0.3 版本,并放出了源码。但 V1.0.3 版本的代码量一下增长了好几倍,有点偏离了 “Mini” 之意。所以我个人是不推荐的。(注:小邪看到这篇文章后说 V1.0.3 版本的只修改默认头像的那个小 Bug。如此说来,还是推荐大家升级到 V1.0.3 版的。因为 V1.0.2 版的默认头像为 default.png,而代码中却写成了 default.jpg 。这样会导致使用默认头像的评论者的头像无法显示。)

官方托管地址:WP Gravatar Mini Cache

插件页面:WP-Gravatar-Mini-Cache_V1.0.2插件更新

作者博客:邪罗刹的菠萝阁

下载链接:WP官网地址 作者放在在GoogleCode上的地址

针对我的博客,为了能让头像和我的博客的主题风格一致,并且为了进一步提高速度,我把小邪的这个插件又精简了一番。是精简,不是改进。就是让所有的头像都用我的默认的头像,hoho~~ 没有头像不好看,有了头像五颜六色的又太乱。所以,如果在我的博客里你看到你的头像不是你的,千万别奇怪哦~~~

解决方法四、曲线救国

因为是废话,所以不多说。

  1. 退回 WordPress V2.9.2
  2. 关闭显示头像功能
  3. 直接用 2.9.2 的 pluggable.php 覆盖 3.0 的 pluggable.php浩子窝窝提供)

后记

通过搜集这些解决方法,我发现了不少牛人,暂时把他们的博客收藏到浏览器了,改天在博客中做个“牛人小酒馆”的页面,把他们放到里面供大家膜拜。

Creative Commons License Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 4.0 International license .