解决WordPress Gravatar头像被墙无法显示方案汇总

  • A+
所属分类:wordpress

WordPress采用的是Gravatar头像作为注册用户和评论用户的头像,但是,因为Gravatar在国外,经常被墙,造成了无法获取Gravatar头像,或者,因为访问被墙,导致网站加载比较慢。如何解决WordPress Gravatar头像被墙无法显示的问题呢?小编汇总几种方法提供您选择,总有一样适合您。

解决WordPress Gravatar头像被墙无法显示方案汇总

方法一:利用多说Gravatar头像中转服务器替代头像默认服务器

将下面代码添加到当前主题functions.php文件中:

  1. function duoshuo_avatar($avatar) {
  2.     $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"gravatar.duoshuo.com",$avatar);
  3.     return $avatar;
  4. }
  5. add_filter( 'get_avatar', 'duoshuo_avatar', 10, 3 );

此方法也有一定的弊端,就是因为多说服务稳定性欠佳,有时也会暂时无法显示头像。如编辑已发表的文章,并且文章已有评论,还需要在文章编辑页面打开右上的“显示选项”去掉“评论”勾选,否则在点击更新文章按钮后,还是会向Gravatar头像服务器发送获取头像请求,从而影响页面加载速度。

方法二:使用https方式(SSL)调用Gravatar头像服务器地址

使用方法同上,将下面代码添加到主题functions.php文件中:

  1. function get_ssl_avatar($avatar) {
  2.    $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);
  3.    return $avatar;
  4. }
  5. add_filter('get_avatar', 'get_ssl_avatar');

此方法相比上一种方法比较稳定,但是,存在的问题是一些头像缓存插件也将失效。如果你非得要用头像缓存插件,那还是不要用这种方法,直接使用Gravatar头像插件吧。

方法三:将Gravatar头像进行本地缓存

先将下面的代码加到functions.php中

  1. function my_avatar($avatar) {
  2.   $tmp = strpos($avatar, 'http');
  3.   $g = substr($avatar$tmpstrpos($avatar"'"$tmp) - $tmp);
  4.   $tmp = strpos($g, 'avatar/') + 7;
  5.   $f = substr($g$tmpstrpos($g"?"$tmp) - $tmp);
  6.   $w = get_bloginfo('wpurl');
  7.   $e = ABSPATH .'avatar/'. $f .'.jpg';
  8.   $t = 1209600; //設定14天, 單位:秒
  9.   if ( !is_file($e) || (time() - filemtime($e)) > $t ) {
  10. //当头像不存在或文件超过14天才更新
  11.     copy(htmlspecialchars_decode($g), $e);
  12.   } else  $avatar = strtr($avatararray($g => $w.'/avatar/'.$f.'.jpg'));
  13.   if (filesize($e) < 500) copy($w.'/avatar/default.jpg', $e);
  14.   return $avatar;
  15. }
  16. add_filter('get_avatar', 'my_avatar');

然后,在WordPress安装根目(即跟wp-content等文件夹同一目录下)下新建一个名为 avatar 的文件夹 ,并给予写权限。放入一张同尺寸的头像图片命名为default.jpg。

此种方法和主机速度挂钩,如果你的服务器特别快则头像加载也特别快。但是,也有一个致命缺点,只能缓存一个尺寸的头像,国内主机无法使用。

具体使用哪一种方法,可以根据个人站点需要。我比较推荐的是第二种方法,目前来说,还算比较稳定吧。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

    • avatar 易路营销软件 1

      来看看你,祝好!

      • avatar 我爱动感单车网 2

        :sad: 我的貌似使用的是第二种方法,感觉勉强还行。