Cum putem obține ID-ul utilizatorului după display_name

12 mar. 2013, 14:45:03
Vizualizări: 20.3K
Voturi: 4

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?

0
Toate răspunsurile la întrebare 5
0

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.

12 mar. 2013 15:21:51
3

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

12 mar. 2013 16:22:44
Comentarii

Aceasta nu pare să funcționeze pentru mine

EHerman EHerman
8 apr. 2014 17:49:04

@EHerman: fără mai multe informații nu pot să-ți spun de ce.

s_ha_dum s_ha_dum
8 apr. 2014 17:58:44

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

shukshin.ivan shukshin.ivan
28 sept. 2015 17:07:18
0

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;
}
10 ian. 2017 16:34:12
1

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 );
12 mar. 2013 16:34:29
Comentarii

display_name nu se află în tabelul usermeta, ci este o coloană dedicată în tabelul users.

Peter Bushnell Peter Bushnell
10 ian. 2017 16:37:19
0

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;
}
4 apr. 2014 10:36:23