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?
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.
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;
}
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
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 );
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;
}