J'utilise WP_User_Query
pour effectuer une recherche par nom, identifiant, adresse électronique, etc. Dans ce cas, je dois utiliser le champ search_columns
pour transmettre l'identifiant ou l'adresse électronique de l'utilisateur.
Ce que je fais est
$my_users = new WP_User_Query(
array(
'role' => $role,
'offset' => $offset ,
'number' => $number,
'fields' => 'all',
'search_columns'=> array( '5','', '[email protected]','',''),
//'search_columns'=> $search_columns_array,
'meta_query' => $meta_query_array,
));
Pour référence http://wpsmith.net/2012/wp/an-introduction-to-wp_user_query-class/
Ceci est couvert dans le lien que vous référencez: l'attribut search_columns
ne définit pas ce qui doit être recherché dans chaque colonne, mais spécifie plutôtquelcolonnes devrait être recherché pour le terme défini dans 'recherche'.
Plus précisément, vous ne pouvez rechercher qu'un seul terme - mais vous pouvez également rechercher dans une ou plusieurs colonnes.
//Search user logins & emails for 'foo'.
$my_users = new WP_User_Query(
array(
'fields' => 'all',
'search'=>'foo',
'search_columns'=> array('user_login', 'user_email'),
));
À partir de source , les valeurs par défaut sont les suivantes:
user_email
- si un '@' est présent dans le terme de rechercheuser_login
, ID
- sinon, mais le terme est numériqueuser_url
- sinon, mais le terme ressemble à une URL (et vous avez moins de 10000 utilisateurs).user_login
et user_nicename
La source:
$search_columns = array();
if ( $qv['search_columns'] )
$search_columns = array_intersect( $qv['search_columns'], array( 'ID', 'user_login', 'user_email', 'user_url', 'user_nicename' ) );
if ( ! $search_columns ) {
if ( false !== strpos( $search, '@') )
$search_columns = array('user_email');
elseif ( is_numeric($search) )
$search_columns = array('user_login', 'ID');
elseif ( preg_match('|^https?://|', $search) && ! wp_is_large_network( 'users' ) )
$search_columns = array('user_url');
else
$search_columns = array('user_login', 'user_nicename');
}