web-dev-qa-db-fra.com

WP Requête utilisateur avec colonnes de recherche et méta-requête

J'essaie de créer une requête avec WP User Query où il est possible d'effectuer une recherche après

  • utilisateur_email
  • user_nicename
  • prénom
  • nom de famille

Ce sont mes arguments:

 $ args = array (
 'role' => 'author', 
 'number' => $ limit, 
 'offset' => $ offset, 
 'order' => $ order_sort, 
 'orderby' => $ order_by, 
 'search' => '*'. esc_attr ($ search_str). '*', 
 'meta_query' => tableau (
 'relation' => 'AND', 
 tableau (
 'key' => 'reg_complete', 
 'valeur' ​​=> 1, 
 'comparer' => '=', 
), 
 tableau (
 'relation' => 'OR' , 
 array (
 'key' => 'prenom', 
 'valeur' ​​=> $ search_str, 
 'compare' => 'LIKE' 
), 
 array (
 'key' => 'dernier nom', 
 'valeur' ​​=> $ search_str, 
 'compare' => 'LIKE' 
) 
), 
) 
); 

fonctionne bien si on cherche après le nom/prénom ... mais ne correspond pas aux noms/email

aucune idée de comment résoudre ce problème?

edit: supprime les search_columns de args et ajoute ce filtre:

 add_filter ('user_search_columns', 'my_user_search_columns', 10, 3); 
 
 function my_user_search_columns ($ search_columns, $ search, $ this, $ this) {
 $ search_columns [] = 'user_email'; 
 $ search_columns [] = 'user_nicename'; 
 
 return $ search_columns; 
} 

Mêmes résultats qu'avant les changements

4
Mathias

Vous devez utiliser le filtre user_search_columns pour ajouter les colonnes sur lesquelles vous souhaitez effectuer une recherche.

Le filtre user_search_columns est utilisé pour déterminer quels champs d'utilisateur de la base de données sont utilisés lors d'une recherche d'informations sur l'utilisateur.

https://codex.wordpress.org/Plugin_API/Filter_Reference/user_search_columns

1
James Barrett