WordPress 调用第三方头像

我写了很多社会化登录的教程,一般我们在进行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

  • 3554稳定运行(天)
  • 1会员总数(位)
  • 28195资源总数(个)
  • 0 本周更新(个)
  • 0今日发布(个)

目前已经有 1 位会员加入