Gravatar头像缓存再次修正版 » 荒野无灯weblog

Keep It Simple, Stupid.

荒野无灯weblog

Gravatar头像缓存再次修正版

以前写过一篇文章叫《缓存Gravatar 头像,博客再次提速》,当初是直接通过修改wp函数来实现的,如果升级了WP版本,每次都要修改,因此还是有一点不方便。
这次补充的主要是通过插件机制来实现显示缓存头像,而不是修改WP文件.另外,新增 qq头像显示功能。
说明:用此修正版的代码前先要确保已经启用了GRAVATAR CACHE 程序。具体方法可见 《缓存Gravatar 头像,博客再次提速》

修正版本:

######## START ############头像缓存#########BY 荒野无灯###############
//2010-05-08更新
function cache_avatar($avatar, $id_or_email, $size)
{
$host=get_bloginfo('wpurl');

    $email = '';
    $url='';
    if ( is_numeric($id_or_email) ) {
        $id = (int) $id_or_email;
        $user = get_userdata($id);
        if ( $user )
            $email = $user->user_email;
    } elseif ( is_object($id_or_email) ) {
        if ( isset($id_or_email->comment_type) && '' != $id_or_email->comment_type && 'comment' != $id_or_email->comment_type )
            return false; // No avatar for pingbacks or trackbacks

        if ( !empty($id_or_email->user_id) ) {
            $id = (int) $id_or_email->user_id;
            $user = get_userdata($id);
            if ( $user)
                $email = $user->user_email;
        } elseif ( !empty($id_or_email->comment_author_email) ) 
        {
            $email = $id_or_email->comment_author_email;
            $url=$id_or_email->comment_author_url;
        }
    } else {
        $email = $id_or_email;
    }

//如果评论者的博客是Qzone ,就用TA的Q头像。    
if ( !empty($url) && preg_match('/^(http:\/\/)?[1-9][0-9]*[\.a-zA-Z\/]+$/i', $url) ||  preg_match('/^[1-9][0-9]*@qq\.com$/i', $email))
 {
     $qq_face_url = 'http://qun.qq.com/cgi/svr/face/getface?type=1&uin=%s';    
//QQ头像地址, %s表示QQ号
        $qq = preg_replace('|\D*|', '', $url);
        if(!$qq)
            $qq = preg_replace('|\D*|', '', $email);
        $avatar = preg_replace('/src=\'[^\']*\'/', 'src=\'' . str_replace('%s', $qq, $qq_face_url) . '\'',  $avatar);
  }
 else
 {
 //否则就用gravatar头像
 $out = "$host/wp-content/gravatar_cache/cache/avatar/";
 $out .= md5( strtolower( $email ) );
 $avatar = "";
   }
  return $avatar;
}

add_filter('get_avatar', 'cache_avatar', 50,3);
########  END  ############头像缓存###########BY 荒野无灯#############

最初版本:

######## START ############头像缓存#########BY 荒野无灯###############
function cache_avatar($avatar, $comment, $size)
{
$host=get_bloginfo('wpurl');
$qq_face_url = 'http://qun.qq.com/cgi/svr/face/getface?type=1&uin=%s';     
//QQ头像地址, %s表示QQ号
//如果评论者的博客是Qzone ,就用TA的Q头像。     
if ( isset($comment->comment_author_url) && preg_match('/^(http:\/\/)?[1-9][0-9]*[\.a-zA-Z\/]+$/i', $comment->comment_author_url) ||  preg_match('/^[1-9][0-9]*@qq\.com$/i', $comment->comment_author_email)) 
 {
        $qq = preg_replace('|\D*|', '', $comment->comment_author_url);
        if(!$qq)
            $qq = preg_replace('|\D*|', '', $comment->comment_author_email);
        $avatar = preg_replace('/src=\'[^\']*\'/', 'src=\'' . str_replace('%s', $qq, $qq_face_url) . '\'',  $avatar);
  }
 else
 {
 //否则就用gravatar头像
 $out = "$host/wp-content/gravatar_cache/cache/avatar/";
 $out .= md5( strtolower( $comment->comment_author_email ) );
 $avatar = "";
   }
  return $avatar;
}

add_filter('get_avatar', 'cache_avatar', 50,3);
########  END  ############头像缓存###########BY 荒野无灯#############

Tagged in : Gravatar,头像缓存,头像,缓存

All Comments (0)
Gravatar image
No Comments