WordPress 根据mixed类型($id_or_email)获取用户ID($user_id)

WordPress中mixed类型($id_or_email)主要出现在关于头像处理的地方,比如get_avatar_urlget_avatarrest_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