设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 教程 > 正文

WordPress评论者头像缓存到本地的方法细解

发布时间:2022-06-24 10:35 所属栏目:61 来源:互联网
导读:gravatar被墙问题是各大使用gravatar头像站长朋友一个比较头痛的问题了,对此小编今天为各位整理了一篇奖WordPress评论者头像缓存到本地的解决方案,下面来看看. 各种忙碌,不多说了,许久未来,gravatar被墙已经有一阵了,看了下本地的头像缓存全成了默认头像,还
  gravatar被墙问题是各大使用gravatar头像站长朋友一个比较头痛的问题了,对此小编今天为各位整理了一篇奖WordPress评论者头像缓存到本地的解决方案,下面来看看.
 
  各种忙碌,不多说了,许久未来,gravatar被墙已经有一阵了,看了下本地的头像缓存全成了默认头像,还好没有影响到访问速度,下面是最新的缓存到本地的代码,解决了gravatar被墙的问题,依旧是替换原来functions.php中的相关代码,清除掉你本地的缓存图片,让重新生成吧~~
 
  可能现在本站有部分页面打开较为缓慢,是因为正在生成新的缓存头像,会慢点,打开过一次就OK了,当然,别人打开过的话也会缓存完成,你访问也就快了~ 见谅~代码如下:
 
  function my_avatar( $email, $size = '42', $default = '', $alt = '') {
 
    $f = md5( strtolower( $email ) );
 
    // 以下代码将头像缓存到wp-content目录下
 
    $a = 'http://a.zpc.me/'. $f . $size . '.png';
 
    $e = WP_CONTENT_DIR . '/avatar/' . $f . $size . '.png';
 
    $d = WP_CONTENT_DIR . '/avatar/' . $f . '-d.png';
 
        // 验证是否有头像
 
        $uri = 'https://secure.gravatar.com/avatar/' . $f . '?d=404';
 
        $headers = @get_headers($uri);
 
        if (!preg_match("|200|", $headers[0])) {
 
          // 有头像且不存在则更新
 
          $r = get_option('avatar_rating');
 
          $g = 'https://secure.gravatar.com/avatar/'. $f. '?s='. $size. '&r=' . $r;
 
          copy($g, $e); //开源软件:phpfensi.com
 
        }
 
      }
 
  其他关于头像缓存可接着往下看,下面的缓存到本地代码,便加入了该判断,也就解决了我的问题,代码如下:
 
  //code by ludou
 
  function my_avatar( $email, $size = '48', $default = '', $alt = '') {
 
    $f = md5( strtolower( $email ) );
 
    // 以下代码将头像缓存到wp-content目录下
 
    $a = WP_CONTENT_URL . '/avatar/'. $f . $size . '.png';
 
    $e = WP_CONTENT_DIR . '/avatar/' . $f . $size . '.png';
 
    $d = WP_CONTENT_DIR . '/avatar/' . $f . '-d.png';
 
    if($default=='')
 
      $default = 'http://a.zpc.me/default.jpg';
 
    $t = 2592000; // 缓存有效期30天, 这里单位:秒
 
    if ( !is_file($e) || (time() - filemtime($e)) > $t ) {
 
      if ( !is_file($d) || (time() - filemtime($d)) > $t ) {
 
        // 验证是否有头像
 
        $uri = 'http://www.gravatar.com/avatar/' . $f . '?d=404';
 
        $headers = @get_headers($uri);
 
        if (!preg_match("|200|", $headers[0])) {
 
          // 没有头像,则新建一个空白文件作为标记
 
          $handle = fopen($d, 'w');
 
          fclose($handle);
 
          $a = $default;
 
        }
 
        else {
 
          // 有头像且不存在则更新
 
          $r = get_option('avatar_rating');
 
          $g = 'http://www.gravatar.com/avatar/'. $f. '?s='. $size. '&r=' . $r;
 
          copy($g, $e);
 
        }
 
      }
 
      else {
 
        $a = $default;
 
      }
 
    }

    $avatar = "<img alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
 
    return apply_filters('my_avatar', $avatar, $email, $size, $default, $alt);
 
  }
 
  在wp-content目录下创建avatar目录,权限755,把上面的代码放入function.php中 ?>前,调用头像的地方 由 get_avatar 改为 my_avatar.
 
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读