Cum putem obține ID-ul utilizatorului după display_name
Am numele de afișare al utilizatorului (display_name
) și cu ajutorul acestuia vreau să obțin id
-ul acelui utilizator.
Deci, cum pot obține ID-ul utilizatorului?

Puteți utiliza următoarea funcție:
function get_user_id_by_display_name( $display_name ) {
global $wpdb;
if ( ! $user = $wpdb->get_row( $wpdb->prepare(
"SELECT `ID` FROM $wpdb->users WHERE `display_name` = %s", $display_name
) ) )
return false;
return $user->ID;
}
Acesta este același cod pe care îl folosește get_user_by()
, dar deoarece această funcție permite doar ID
, slug
, email
sau login
, trebuie să creăm o nouă funcție.

Folosește WP_User_Query
.
$args= array(
'search' => 'Nume Afișat', // sau login sau nicename în acest exemplu
'search_fields' => array('user_login','user_nicename','display_name')
);
$user = new WP_User_Query($args);
Tocmai am răspuns la o întrebare foarte asemănătoare: Cum putem obține ID-ul autorului după nume

dump-ul $user
arată că display_name
nu este în interogarea sql. Folosește un alt răspuns pentru a-l activa http://wordpress.stackexchange.com/questions/201779/how-to-get-user-by-display-name-with-wp-user-query

Cred că acest lucru nu a fost menționat, probabil pentru că căutarea include atât display_name, cât și adresa de email, URL, ID și nume de utilizator. Această abordare oferă mai mult decât este necesar, dar a funcționat bine în cazul meu particular.
function get_user_id_by_search( $search_term ) {
$user = get_users(array('search' => $search_term));
if (!empty($user))
return $user[0]->ID;
}

Neprobat deloc, dar nu văd nimic în cod care să nu funcționeze folosind get_users()
cu o interogare meta:
$users = get_users( array(
'meta_key' => 'display_name',
'meta_value' => 'John Doe'
) );
$user = ( ( isset( $users[0] ) ? $users[0] : false );
$user_id = ( $user ? $user->ID : false );

interogarea utilizatorilor în WordPress nu permite implicit afișarea display_name în coloana de căutare chiar dacă este adăugată, iată o soluție http://manchumahara.com/2014/04/03/search-user-by-display-name-in-wordpress-sitewide/
Exemplu:
$args= array(
'search' => 'Nume Afișat', // sau login sau nicename în acest exemplu
'search_fields' => array('user_login','user_nicename','display_name')
);
$user = new WP_User_Query($args);
Interogarea de mai sus nu va găsi display_name
trebuie să utilizați acest filtru
add_filter('user_search_columns', 'user_search_columns_bd' , 10, 3);
function user_search_columns_bd($search_columns, $search, $this){
if(!in_array('display_name', $search_columns)){
$search_columns[] = 'display_name';
}
return $search_columns;
}
