解决 wordpress 引用被墙的 gravatar 头像导致速度慢的方法

601 查看

Gravatar 在国内被墙的越来越严重,严重影响了博客的打开速度。以下方式能将 wordpress 引用的 Gravatar 通过服务器下载到本地并缓存。只确保海外的主机能用,国内的主机本身就无法访问到 gravatar 服务器,缓存就更无从谈起了。

  1. 在 wordpress 根目录中增加一个目录 avatar,确认权限为 755
  2. 在 avatar 目录中上传一张默认头像 defalut.jpg
  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');