这几天不管出于什么原因,头像无法显示了都是叉,在2010年10月15号左右也出现过类似的情况,我使用的这款主题是可以缓存头像的,但是还是有诸多不便,在这里发布一下解决办法。
第一种方法是更改头像地址
找到博客根目录下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://www.gravatar.com';
}
更改为:
if ( is_ssl() )
$host = 'https://secure.gravatar.com';
else
$host = 'http://www.gravatar.com';
第二种方法是将头像缓存到服务器
(注:国内主机无效)先在你的网站 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');
以上两种方法是解决头像无法显示的办法,以上方法仅是用于wordpress。