gravatar头像不能显示的解决方法
gravatar.com提供根据你所输入的Email地址,显示统一的留言头像输出服务。由于某种不明原因,gravatar的服务出现不“稳定”现象,造成很多blog留言中的头像无法显示,影响非常广泛。
目前的被动解决方法有gravatar头像本地缓存、手动指定gravatar头像输出服务器等,在当前情况下还是能够解决头像显示问题的。
gravatar头像缓存代码
willin kan 博客中提供的本地缓存gravatar头像的方法:
- wp-content 的同級目录建立文件夹: /avatar 权限: '0755', 作为gravatar 缓存路径. (若权限: '0755' 不行, 可尝试改为'0777')。
- 准备一张适合你模板尺寸的默认头像, 命名为"default.jpg" 放在此文件夹下。
- 将以下代码copy 到模板的 functions.php中即可
function my_avatar($avatar) {
$tmp = strpos($avatar, 'http');
$g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp);
$tmp = strpos($g, 'avatar/') + 7;
$f = substr($g, $tmp, strpos($g, "?", $tmp) - $tmp);
$w = get_bloginfo('wpurl');
$e = ABSPATH .'avatar/'. $f .'.jpg';
$t = 1209600; //設定14天, 單位:秒
if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新
copy(htmlspecialchars_decode($g), $e);
} else $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
if ( filesize($e) < 500 ) copy($w.'/avatar/default.jpg', $e);
return $avatar;
}
add_filter('get_avatar', 'my_avatar');
gravatar头像缓存插件
如果觉得修改代码很繁琐,可以使用荒野无灯制作的Hacklog Gravatar Cache插件,后台启用插件后,会自动缓存gravatar头像到本地服务器。
gravatar头像服务器指定
柠檬日记提供了一个比较取巧的方法,修改/wp-includes/pluggable.php,将默认的gravatar头像服务器指定到www.gravater.com,避开有问题的二级域名。
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';
听说gravatar头像不能显示,还以为被河蟹了呢。
@april, 没错,是被和谐了。准确的说,是gravatar用以输出、显示头像的二级域名被和谐了。
天!…….
@东暴, 大局域网中,什么吃惊的事情都有可能发生。
帅大叔用了哪种方法?插件好用吗?
@feathia, 我用插件的,主要是考虑以后升级版本方便,而且缓存在本地后,加载速度也快一些。
今天头像突然又正常了。真是诡异!不知道能维持多久。
@feathia, 嗯,cdn加速服务器被封造成的。
谢谢,我用最后一个办法吧,比较方便。
看看我的头像显不显示
@tututa, 在我自己的WP博客上能正常显示,怎么在这里不可以呢,求站长和各位同仁解答 T T
@tututa, 显示的是QQ图标,应该是之前用过qq邮箱留言,缓存了qq的图标,有空我更新下缓存看看。