WordPress免插件代码实现Gravatar头像缓存

Gravatar是WordPress标配的头像服务。

只要你在Gravatar的服务器设置上传了你自己的头像,便可在任何支持Gravatar的博客、论坛使用它。但由于GFW的原因, Gravatar 服务经常会挂掉。

所以有必要在自己的网站来缓存 Gravatar 头像,保证Gravatar 头像的正常使用,并且也能变相地给博客提速。

20141030000443

下面的代码来自于Willin。Willin大神不玩WordPress好多年了,所以绝对值得收藏这段经典代码。

WordPress免插件仅代码实现Gravatar头像缓存的方法

1、将下面的代码放到主题的funtions.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');

默认缓存时候为14天,可以随意修改,比如一个月或者几十天都可以。

2、在WordPress安装根目录下新建名为 avatar 的文件夹 ,设置该文件夹的权限为 755 或者干脆777。放入一张同尺寸的头像图片命名为default.jpg。

随后刷新一下含有评论的文章,然后去 avatar 的文件夹看看有没有缓存的头像。

未经允许不得转载:主机格调 » WordPress免插件代码实现Gravatar头像缓存