记录一些常用的函数和瞎折腾的过程……

wordpress函数之:avatar头像缓存到本地

提醒:本文最后更新于 2596 天前,文中所描述的信息可能已发生改变,请谨慎使用。

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