最近遇到wordpress的头像在国内一直显示不出来,问题发生在WordPress 3.0 以上,WordPress 的头像服务 Gravatar 的部分服务器在国内访问困难, 原因是 Gravatar 所使用的 edgecast CDN 服务遇到了某些问题. WordPress 3.0 通过读取缓存服务器的方式, 减少了对 www.gravatar.com 的直接请求; 以往直接读取官方服务器. 现在都被分流到 0.gravatar.com, 1.gravatar.com 等缓存服务器上了, 这次遇上 CDN 故障, 所以就出现了无法读取头像的问题.
解决办法一:插件
只需修改 Gavatar 头像的访问方式, 直接请求官方服务器即可. 一些热心网友已经找到问题, 并给出了解决方案. 而现在有更方便的解决办法, 插件. Gravatar Fixed 插件通过函数覆盖的方式, 重新自定义 Gravatar 服务器, 直接访问 www.gravatar.com 读取头像, 以保证正常访问.
插件页面: Gravatar Fixed 头像修正插件
下载链接: gravatar-fixed.zip
解决办法二:代码
“0.gravatar.com”这个网址无法访问了,“www.gravatar.com”这个主页还可以正常访问。那么我们可以修改自己的wordpress,让它从“www.gravatar.com”获取用户的头像解决这个问题:
找到“wp-includes/pluggable.php”文件,找到代码:
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'
;
}