一般我们在进行oauth授权的时候都可以调用第三方的头像,一定程度上可以弥补很多人没有gravatar头像的缺陷。原理其实很简单,我们只需要把头像用user_meta储存起来,然后再通过get_avatar的hook来调用即可。完全不需要修改主题的头像调用。
下面的代码添加到functions.php中,其中头像的调用部分根据你实际情况略有不同。
function fa_avatar_hook( $avatar, $id_or_email, $size, $default, $alt ) { $user = false; if ( is_numeric( $id_or_email ) ) { $id = (int) $id_or_email; $user = get_user_by( 'id' , $id ); } elseif ( is_object( $id_or_email ) ) { if ( ! empty( $id_or_email->user_id ) ) { $id = (int) $id_or_email->user_id; $user = get_user_by( 'id' , $id ); } } else { $user = get_user_by( 'email', $id_or_email ); } if ( $user && is_object( $user ) ) { if( get_user_meta($user->data->ID,'weixin_avatar',true) ){ $avatar = get_user_meta($user->data->ID,'weixin_avatar',true); $avatar = str_replace('http','https',$avatar); $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"; } else if( get_user_meta($user->data->ID,'sina_avatar',true) ){ $avatar = get_user_meta($user->data->ID,'sina_avatar',true); $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"; }//根据你的存储头像的key来写 } return $avatar; } add_filter('get_avatar', 'fa_avatar_hook' , 1 , 5);
以上代码已更新到github中的repo中,地址https://github.com/bigfa/wp-oauth
微信头像是支持https的,而微博的不支持,如果你的网站启用了https,要注意这一点。
via bigfa