WordPress评论者头像缓存到本地优化版 – 修复gravatar被墙问题

各种忙碌,不多说了,许久未来,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';
  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 = 'https://secure.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 = 'https://secure.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);
}
相关的文章:

暂无评论

写评论