[转]缓存 Gravatar 头像到本地服务器

作者: harde 分类: PHP,开发相关 发布时间: 2013-11-11 15:21

发现Gravatar很影响速度,于是打算干掉Gravatar。不过删除Gravatar总感觉少点什么,偶然间看到
胖子马这位设计师写的
《缓存 Gravatar 头像到本地服务器》http://seo3.ui90.com/q7-gravatar-cache.html
遂拿来用一下。

文章中的代码无效,调试了半天也没搞好,在Willin Kan.这里搞到新的代码,并安装使用了。

首先在主题的functions.php文件中追加一个函数。

/* Mini Gavatar Cache by Willin Kan. */
function my_avatar( $email, $size = '30', $default = '', $alt = '' ) {
  $alt = esc_attr( $alt );
  $f = md5( strtolower( $email ) );
  $w = WP_CONTENT_URL; // 如果想放在根目录,请使用get_bloginfo('wpurl');
  $a = $w. '/avatar/'. $f. '.jpg';
  $e = WP_CONTENT_DIR. '/avatar/'. $f. '.jpg'; // 如果想放在根目录请更改为ABSPATH. 'avatar/'. $f. '.jpg';
  $t = 1209600; //设定头像更新时间(14天, 单位秒),可以设置长一些,毕竟大家的头像一般都是很长时间才更新。
  if ( empty($default) ) $default = $w. '/avatar/avatar.png';
  if ( !is_file($e) || (time() - filemtime($e)) > $t ){ //当头像不存在或超过14天再更新
    $r = get_option('avatar_rating');
    //$g = sprintf( "http://%d.gravatar.com", ( hexdec( $f{0} ) % 2 ) ). '/avatar/'. $f. '?s='. $size. '&d='. $default. '&r='. $r; //WP 3.0 的服务器
    $g = 'http://www.gravatar.com/avatar/'. $f. '?s='. $size. '&d='. $default. '&r='. $r; //旧服务器(自动选择)
    copy($g, $e); $a = esc_attr($g); //复制到本地
  }
  if (filesize($e) < 500) copy($default, $e);
  echo "<img title='{$alt}' alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}

然后找到你主题中评论的模板
把get_avatar()的部分更改为my_avatar()

例如:<!--?php echo get_avatar($comment, $size='40', $default='' ); ?-->
改为:<?php echo my_avatar($comment->comment_author_email, $size='30', $default='', $alt=strip_tags($comment->comment_author) ); ?>

注意:调用此函数时需要给参数 $alt 赋值,不然 alt 同样不起作用,$alt 一般赋值为评论作者名。

在wp-content 文件夹下新建立一个 avatar 文件夹,
更改权限为755。这个文件夹就是将来缓存 Gravatar 头像的地方。

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

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注