WordPress博客Gravatar头像显示失效解决方法

null
  这几天不管出于什么原因,头像无法显示了都是叉,在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。

WordPress博客Gravatar头像显示失效解决方法》上有37条评论

  1. Always.Life

    gravatar-fixed插件也可以修改gravatar源服务器,如果要修改源文件,我的建议还是使用插件,方便简单且无阻升级。

    第二种办法其实更可取 :mrgreen:

    回复
  2. EIEMan

    前两天就发现不显示了.开始以为主题问题没有搭理 , 昨天测试评论的时候才发现XXX了.改了地址OK了 , 你就要牛逼些弄了两种方法出来 , 我一个方法都搞了好一会儿. 😯

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.