Come ottenere l'ID utente dal suo display_name

12 mar 2013, 14:45:03
Visualizzazioni: 20.3K
Voti: 4

Ho il display_name di un utente e con questo voglio ottenere l'id di quell'utente.

Quindi, come posso ottenere l'ID utente?

0
Tutte le risposte alla domanda 5
0

Puoi utilizzare la seguente funzione:

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;
}

Questo è lo stesso codice che utilizza get_user_by(), ma poiché quella funzione permette solo ID, slug, email o login, dobbiamo creare una nuova funzione.

12 mar 2013 15:21:51
3

Utilizza WP_User_Query.

$args = array(
  'search' => 'Nome Visualizzato', // oppure login o nicename in questo esempio
  'search_fields' => array('user_login', 'user_nicename', 'display_name')
);
$user = new WP_User_Query($args);

Ho appena risposto a una domanda molto simile: Come ottenere l'ID dell'autore dal suo Nome

12 mar 2013 16:22:44
Commenti

Questo non sembra funzionare per me

EHerman EHerman
8 apr 2014 17:49:04

@EHerman: senza ulteriori informazioni non potrei dirti perché.

s_ha_dum s_ha_dum
8 apr 2014 17:58:44

il dump di $user mostra che display_name non è nella query sql. Usa un'altra risposta per abilitarlo http://wordpress.stackexchange.com/questions/201779/how-to-get-user-by-display-name-with-wp-user-query

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

Non credo che questo sia stato menzionato, probabilmente perché la ricerca include sia display_name che indirizzo email, URL, ID e username, il che è più del necessario ma ha funzionato bene per il mio caso d'uso specifico.

function get_user_id_by_search( $search_term ) {
    $user = get_users(array('search' =>  $search_term));

    if (!empty($user))
        return $user[0]->ID;
}
10 gen 2017 16:34:12
1

Completamente non testato, ma non vedo nulla nel codice che possa far pensare che non funzionerebbe utilizzare get_users() con una meta query:

$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
Commenti

display_name non si trova nella tabella usermeta ma è una colonna dedicata nella tabella users.

Peter Bushnell Peter Bushnell
10 gen 2017 16:37:19
0

la query utente di WordPress per impostazione predefinita non consente di includere display_name nelle colonne di ricerca anche se viene aggiunto, ecco una soluzione http://manchumahara.com/2014/04/03/search-user-by-display-name-in-wordpress-sitewide/

Esempio:

$args= array(
  'search' => 'Display Name', // oppure login o nicename in questo esempio
  'search_fields' => array('user_login','user_nicename','display_name')
);
$user = new WP_User_Query($args);

La query sopra non troverà risultati per display_name

è necessario utilizzare questo filtro

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