深圳SEO自媒体
努力去发现SEO世界!

Gravater头像被墙(不显示)的解决方案

很久没看博客了,今天打开网站发现头像都不能显示了,在网上搜索看了一下,原来是Gravater头像被墙了,更上次谷歌服务器被墙导致WordPress打开很慢的原因一样的。头像不显示,网站再好也毁三观,赶紧找到了解决办法:

1、functions.php 加入如下代码:

function quickly_gravatar($avatar) {  
$avatar = str_replace('?s=', '.png?s=', $avatar);  
$avatar = preg_replace("/([0-9])\.gravatar/i", "en.gravatar", $avatar);  
return $avatar;  
add_filter('get_avatar', 'quickly_gravatar');

2、调用ssl 头像链接

https还是没被墙的,而且速度还不错,直接调用这个最简单了。

如果你的网站启用了ssl则不需要了,否则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 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安装根目(即跟wp-content等文件夹同一目录下)下新建一个名为 avatar 的文件夹 ,并给予写权限。放入一张同尺寸的头像图片命名为default.jpg。

欢迎转载本站文章:刘志仕博客 » Gravater头像被墙(不显示)的解决方案

分享到:更多 ()

评论 4

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #4

    互传电商网2年前 (2015-07-17)回复
  2. #3

    膜拜啊,大神

    吴建斌3年前 (2015-04-30)回复
  3. #2

    吊炸天

    吴建斌3年前 (2015-04-30)回复
  4. #1

    膜拜啊,大神

    吴建斌3年前 (2015-04-22)回复