解决 Gravatar 被墙导致无法显示的问题

2014年12月3日 发表评论 阅读评论

最近wordpress默认使用的Gravatar头像地址又被墙了,虽然不影响blog页面的正常访问,不过对于一个处女座的人是容不下这点瑕疵的。以下总结了几种针对该问题的解决方法。

方法1:更换gravater地址

通过查找gravater的地址,共找到了以下地址:

http://www.gravatar.com
http://0.gravatar.com
http://1.gravatar.com
http://2.gravatar.com
http://gravatar.com
http://cn.gravatar.com
https://secure.gravatar.com

测试发现前四个地址已经被和谐了,后面三个还可以访问。所以最简单的方法就是将wordpress默认的gravatar服务器修改为后面三个。打开wordpress程序根目录的wp-includes文件夹,找到pluggable.php打开,将大约2150至2157行:

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

替换为:

$host = 'https://secure.gravatar.com';
或
$host = 'http://cn.gravatar.com';

不过该方法美中不足就是当wordpress进行更新,会将该文件覆盖。界时需要再手工改一次。

方法2:使用https方式(SSL)调用Gravatar头服务器地址

使用https方式(SSL)调用Gravatar头服务器地址需要将下面代码添加到主题functions.php文件中:

function get_ssl_avatar($avatar) {
   $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2">',$avatar);
   return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');

使用该方法可能会造成头像缓存插件失效。

方法3:使用第三方法服务器中转

国内常用的有七牛、多说等,这里以多说为例,在当前主题functions.php文件中添加如下代码:

function mytheme_get_avatar( $avatar ) {
$avatar = preg_replace( "/http:\/\/(www|\d).gravatar.com/","http://gravatar.duoshuo.com",$avatar );
return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar' );

多说服务的稳定性且不说,之前使用过多说的评论插件,感觉不是甚好。

方法4:插件

以Gravatar Fixed 头像修正插件为例,插件设置页面,将Gravatar 服务器和Gravatar SSL 服务器,全部改为:https://secure.gravatar.com或http://cn.gravatar.com。

插件多了的话,速度自然不感觉恭维,如果你也玩了wp N久了这点不说自明吧。

啰嗦了一大堆,还是推荐方法1 。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: 未分类 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.