最近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 。