WP_User::get_data_by() public WP 3.3.0
Return only the main user fields
{} It's a 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: '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. |
Code of WP_User::get_data_by() WP User::get data by WP 5.7.1
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;
}