用鼠标与指尖
让互联网更加有趣

Gravatar头像被墙的解决方案

Gravatar头像服务大家都有所了解,尤其是WordPress玩家,不幸的是最近Gravatar头像服务在国内被墙,已经彻底的打不开了,国内主机以前的缓存到本地的方法也失效了,那么有什么办法能解决这一问题呢,想跟强大的 Gril Friend Wall 作斗争,不是一件容易的事情!下面就告诉大家解决方法。

Gravatar头像被墙的解决方案-小伟博客

1、调用ssl 头像链接(推荐)

经测试发现,Gravatar 的 https 链接还是没有被屏蔽的,直接调用,是最简单直接的方法!

使用方法,在 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');

优点:简单实用,直接调用官方数据,稳定。

缺点:直接调用官方头像,如果头像太大,会导致速度变慢。

2、国外主机缓存到本地

添加以下代码到 functions.php 文件中:

  1. function my_avatar($avatar) {
  2. $tmp = strpos($avatar, 'http');
  3. $g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp);
  4. $tmp = strpos($g, 'avatar/') + 7;
  5. $f = substr($g, $tmp, strpos($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 ) { //当头像不存在或者超过了14天才会更新
  10. copy(htmlspecialchars_decode($g), $e);
  11. } else  $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
  12. if (filesize($e) < 500) copy($w.'/avatar/default.jpg', $e);
  13. return $avatar;
  14. }
  15. add_filter('get_avatar', 'my_avatar');

首先需要在WordPress安装根目录下新建一个名为 avatar 的文件夹,给与可以写入的权限。放入一张名为default.jpg的默认头像。

优点:一次缓存就可以了,可以提高网站打开速度,主机速度快。缓存的速度就快

缺点:只有国外主机可以使用

3、利用多说缓存

添加以下代码到 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头像被墙的解决方案

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

小伟博客 · 给你感兴趣的内容

联系我们官方交流群