WP_User::get_data_by()public staticWP 3.3.0

Returns only the main user fields.

Method of the class: WP_User{}

No Hooks.

Return

Object|false. Raw user object.

Usage

$result = WP_User::get_data_by( $field, $value );
$field(string) (required)
The field to query against: Accepts 'id', 'ID', 'slug', 'email' or 'login'.
$value(string|int) (required)
The field value.

Notes

  • Global. wpdb. $wpdb WordPress database abstraction object.

Changelog

Since 3.3.0 Introduced.
Since 4.4.0 Added 'ID' as an alias of 'id' for the $field parameter.

WP_User::get_data_by() code WP 6.6.2

public static function get_data_by( $field, $value ) {
	global $wpdb;

	// 'ID' is an alias of 'id'.
	if ( 'ID' === $field ) {
		$field = 'id';
	}

	if ( 'id' === $field ) {
		// Make sure the value is numeric to avoid casting objects, for example, to int 1.
		if ( ! is_numeric( $value ) ) {
			return false;
		}
		$value = (int) $value;
		if ( $value < 1 ) {
			return false;
		}
	} else {
		$value = trim( $value );
	}

	if ( ! $value ) {
		return false;
	}

	switch ( $field ) {
		case 'id':
			$user_id  = $value;
			$db_field = 'ID';
			break;
		case 'slug':
			$user_id  = wp_cache_get( $value, 'userslugs' );
			$db_field = 'user_nicename';
			break;
		case 'email':
			$user_id  = wp_cache_get( $value, 'useremail' );
			$db_field = 'user_email';
			break;
		case 'login':
			$value    = sanitize_user( $value );
			$user_id  = wp_cache_get( $value, 'userlogins' );
			$db_field = 'user_login';
			break;
		default:
			return false;
	}

	if ( false !== $user_id ) {
		$user = wp_cache_get( $user_id, 'users' );
		if ( $user ) {
			return $user;
		}
	}

	$user = $wpdb->get_row(
		$wpdb->prepare(
			"SELECT * FROM $wpdb->users WHERE $db_field = %s LIMIT 1",
			$value
		)
	);
	if ( ! $user ) {
		return false;
	}

	update_user_caches( $user );

	return $user;
}