北极寒流 » 网络资源 » 让简单头像Gavatar缓存函数my_avatar真正支持alt - 2010.09.07

让简单头像Gavatar缓存函数my_avatar真正支持alt

willin最新版那个简单头像Gavatar缓存函数 my_avatar() 里面的 $alt 参数其实是没有作用的,即使你设置为 true ,返回的只是 1,所以不能达到显示头像的 alt 值。

大家也许会问:加入了alt属性有什么好处?答:它可以提高yslow和page speed的分数。

1. 在 wp-content 的同级目录建立文件夹:avatar,权限为:755, 这是准备 gravatar 缓存的路径。接着把下面这段代码加入你主题的functions.php中。

让函数真正支持头像的 alt 显示,简单头像Gavatar缓存代码如下

/* Mini Gavatar Cache by Willin Kan. */
function my_avatar( $email, $size = '42', $default = '', $alt = '' ) {
  // $alt = (false === $alt) ? '' : esc_attr( $alt );
  $alt = ('' == $alt) ? '' :  $alt ;
  $f = md5( strtolower( $email ) );
  $a = get_bloginfo('wpurl'). '/avatar/'. $f. '.jpg';
  $e = ABSPATH. 'avatar/'. $f. '.jpg';
  $t = 1209600; //設定14天, 單位:秒
  if ( empty($default) ) $default = get_bloginfo('template_directory'). '/img/default.jpg';
  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);
  $avatar = "<img title='{$alt}' alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
  return apply_filters('my_avatar', $avatar, $email, $size, $default, $alt);
}
// -- END ----------------------------------------

再准备一个50x50px的jpg头像,命名为default.jpg,放在你主题的img文件夹下,想放其他地方,自行修改上面代码中的路径吧。

用法说明介绍:

my_avatar( $email, $size = '40', $default = '', $alt = '' )

$email: 评论者email
$size: 头像图片大小
$default: 默认头像位置,如果你不设置,那么在 avatar 缓存目录放一个 default.jpg 作为默认头像。
$alt: 评论者昵称

用法举例

1. 文章评论页面调用一般是这样:

<?php echo my_avatar($comment->comment_author_email,$size='40',$default='',$comment->comment_author); ?>

例如壹品集原来的评论那里Gavatar的相关代码是:这段代码哪里找?一般是在comments.php 或是在 functions.php 里。

<?php echo get_avatar( $comment, $size = '50', $default = '<path_to_url>' ); ?>

那么找到那段代码换成上面的或者是下面的代码就ok:注:下面是不需要定义$default和$alt的。

<?php echo my_avatar($comment->comment_author_email,$size='40'); ?>

最新评论里面用的

my_avatar($rc_comm->comment_author_email,$size='40',$default='',$rc_comm->comment_author)

资料来源:http://zww.me/archives/25296