wordpress函数之:avatar头像缓存到本地
avatar头像应用越来越广泛,但是在国内,出于某些原因,国内访问有时不是很顺畅,有时因为加载一个avatar头像严重影响到网站的速度,此时可以应用以下函数,将avatar头像缓存到本地,大大加快网站的访问速度。
//avatar头像缓存
function my_avatar( $email = 'unite@boke123.net', $size = '40', $default = '', $alt = '') {
$f = md5( strtolower( $email ) );
$a = get_bloginfo('template_url') . '/avatar/'. $f . $size . '.png';
$e = get_template_directory() . '/avatar/' . $f . $size . '.png';
$d = get_template_directory() . '/avatar/' . $f . '-d.png';
$txdf = get_bloginfo('template_url'). '/avatar/default.jpg';
if($default=='')
$default = $txdf;
$t = 2592000; // 缓存有效期30天, 这里单位:秒
if ( !is_file($e) || (time() - filemtime($e)) > $t ) {
if ( !is_file($d) || (time() - filemtime($d)) > $t ) {
// 验证是否有头像
$uri = 'http://gravatar.duoshuo.com/avatar/' . $f . '?d=404';
$headers = @get_headers($uri);
if (!preg_match("|200|", $headers[0])) {
// 没有头像,则新建一个空白文件作为标记
$handle = fopen($d, 'w');
fclose($handle);
$a = $default;
}
else {
// 有头像且不存在则更新
$r = get_option('avatar_rating');
$g = 'http://gravatar.duoshuo.com/avatar/'. $f. '?s='. $size. '&r=' . $r;
copy($g, $e);
}
}
else {
$a = $default;
}
}
$avatar = "<img alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
return apply_filters('my_avatar', $avatar, $email, $size, $default, $alt);
}
在评论列表中引用头像时就可以用上述函数调用了:
<?php echo my_avatar( $comment->comment_author_email,40,$default='',$comment->comment_author); ?>