WordPress 根据mixed类型($id_or_email)获取用户ID($user_id)
2022-07-19
WordPress中mixed类型($id_or_email)主要出现在关于头像处理的地方,比如get_avatar_url、get_avatar和rest_get_avatar_urls等。
实际业务中可能会需要根据$id_or_email来获取用户ID,方法推荐如下:
function pury_get_user_id( $id_or_email ) {
$retval = 0;
if ( is_numeric( $id_or_email ) ) {
$retval = $id_or_email;
} elseif ( is_string( $id_or_email ) ) {
$user_by = is_email( $id_or_email )
? 'email'
: 'login';
$user = get_user_by( $user_by, $id_or_email );
if ( ! empty( $user ) ) {
$retval = $user->ID;
}
} elseif ( $id_or_email instanceof WP_User ) {
$retval = $id_or_email->ID;
} elseif ( $id_or_email instanceof WP_Post ) {
$retval = $id_or_email->post_author;
} elseif ( $id_or_email instanceof WP_Comment ) {
if ( ! empty( $id_or_email->user_id ) ) {
$retval = $id_or_email->user_id;
}
}
return (int) $retval;
}
感谢:源码出自插件【WP User Avatars】
Plugin URI: https://wordpress.org/plugins/wp-user-avatars