缓存 Gravatar 头像到本地最简单的方法

网站默认情况下显示的 Gravatar 头像都是直接调用其服务器上面的资源,Gravatar 服务器有很大的不稳定性,前段时间就在国内造成了大面积的无法访问。今天园子就与大家分享下缓存 Gravatar 头像到本地最简单的方法

在以前的文章中园子也介绍过缓存 Gravatar 头像到本地服务器的一些可行方法,里面提供的方法在现在看到已经有些复杂了。这次分享的是来自 Willin Kan 大师的作品,只需要简单三步就可以实现缓存头像到本地服务器

三步实现缓存 Gravatar 头像到本地

1.在你网站的根目录,也就是与 wp-content 文件夹同级的目录下新建立一个 avatar 文件夹,更改权限为0755(在FTP软件中,右键点击文件夹,选择“属性”或者“CHMOD”即可打开属性窗口,在里面更改权限即可)。这个文件夹就是将来存放 Gravatar 头像的地方。

2.准备一张默认的头像图片,命名为:default.jpg,将其上传到 avatar 文件夹下面。这张图片的作用就是如果用户没有定义过头像,就调用这张默认的头像。这里有园子提供的图片下载

3.将下面的代码复制到你使用主题中的 functions.php 文件中,保存并上传。再次刷新页面,即可看到 Gravatar 头像已经缓存到本地了。

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');

当查看图片属性时,看到链接地址形式变为形如:http://www.yzznl.cn/avatar/94edba5ccaf4f54d0891cf3a7b1e1280.jpg 这种样式就缓存成功了。

这种方法是园子见到的最简单的方法,当然,使用插件另当别论了。版权归 Willin Kan 所有,原文请点击这里

小知识:什么是 Gravatar?

Gravatar 的概念首先是在国外的独立 WordPress 博客中兴起的,当你到任何一个支持 Gravatar 的网站留言时,这个网站都就会根据你所提供的 Email 地址为你显示出匹配的头像。如果你不清楚如何自定义 wordpress 头像,可以点击这里查看详细教程

缓存 Gravatar 头像到本地最简单的方法》上有22条评论

发表评论