web-dev-qa-db-fra.com

Comment pouvez-vous obtenir l'ID utilisateur par son display_name

J'ai l'utilisateur display_name et avec cela je veux obtenir la id de cet utilisateur.

Alors, comment puis-je obtenir l'ID utilisateur?

1
Adi

Vous pouvez utiliser la fonction suivante:

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

C'est le même code get_user_by() utilise, mais comme cette fonction ne permet que ID, slug, email ou login, nous devons créer une nouvelle fonction.

3
Mike Madern

Je ne pense pas que cela ait été mentionné, probablement parce que la recherche display_name ainsi que l'adresse e-mail, l'URL, l'ID et le nom d'utilisateur sont plus que nécessaires, mais ont bien fonctionné pour mon cas d'utilisation particulier.

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

    if (!empty($user))
        return $user[0]->ID;
}
1
Peter Bushnell

Utilisez WP_User_Query .

$args= array(
  'search' => 'Display Name', // or login or nicename in this example
  'search_fields' => array('user_login','user_nicename','display_name')
);
$user = new WP_User_Query($args);

Je viens de répondre à une question très similaire à celle-ci: Comment obtenir l'identifiant de l'auteur par son nom

1
s_ha_dum

Complètement non testé, mais je ne vois rien dans le code qui explique pourquoi cela ne fonctionnerait pas d'utiliser get_users() avec une méta-requête:

$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 );
1
Chip Bennett

la requête utilisateur wordpress par défaut n'autorise pas l'affichage display_name dans la colonne de recherche, même si elle a été ajoutée, voici une solution http://manchumahara.com/2014/04/03/search-user-by-display-name- in-wordpress-sitewide/

Exemple:

$args= array(
  'search' => 'Display Name', // or login or nicename in this example
  'search_fields' => array('user_login','user_nicename','display_name')
);
$user = new WP_User_Query($args);

La requête ci-dessus ne trouvera pas display_name

vous devez utiliser ce filtre

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