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)