J'essaie d'utiliser la classe WP_User_Query
pour répertorier tous les utilisateurs en fonction de leurs champs meta
spécifiques.
Lorsque j'utilise une simple requête simple méta, cela fonctionne bien:
$q = new WP_User_Query( array(
'role' => 'contributor',
'fields' => 'all_with_meta',
'meta_key' => 'first_meta',
'meta_value' => '2'
) );
mais lorsque j'essaie de combiner une requête à deux champs et de trouver des utilisateurs qui ont rempli le champ méta second_meta
, la requête répertorie tous les contributeurs (la méta-requête ne fonctionne pas du tout):
$q = new WP_User_Query( array(
'role' => 'contributor',
'fields' => 'all',
'meta_query' => array(
'relation' => 'AND',
0 => array(
'meta_key' => 'first_meta',
'meta_value' => '2'),
1 => array(
'meta_key' => 'second_meta',
'meta_value' => '',
'meta_compare' => '!='
)
)
) );
Comment puis-je faire fonctionner cette méta-requête combinée?
Bien sûr, j'essaie de trouver tous les utilisateurs qui sont des contributeurs, ont first_meta
== 2 ET second_meta
n'est pas vide
On dirait que vous utilisez des paramètres incorrects, essayez plutôt ceci (non testé):
$q = new WP_User_Query(
array(
'role' => 'contributor',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'first_meta',
'value' => '2',
),
array(
'key' => 'second_meta',
'value' => '',
'compare' => '!='
)
)
)
);
où nous avons utilisé les paramètres key
, value
et compare
dans le tableau meta_query
. J'ai également supprimé la partie 'fields' => 'all'
, car elle est définie par défaut.