最新公告
  • 欢迎您光临站盟网(原知事网),一个优质的网站源码基地、精品网站模板和插件。欢迎加入永久SVIP
  • Gravater头像被墙(不显示)的解决方案

    正文概述 知事网   2014-11-25 09:11   93

    很久没看博客了,今天打开网站发现头像都不能显示了,在网上搜索看了一下,原来是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头像被墙(不显示)的解决方案

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者
    请选择支付方式
    ×
    支付宝支付
    微信支付
    余额支付
    ×
    微信扫码支付 0 元