Pour une raison quelconque, lors d’une requête utilisateur avec un méta filtre, j’ai un utilisateur qui, lorsque je print_r
, les résultats apparaissent deux fois dans la liste ...
J'ai vérifié la base de données, juste au cas où il semblerait y avoir des entrées en double mais il n'y a qu'une seule valeur pour l'utilisateur. De plus, sans la méta-requête, l'utilisateur n'apparaît qu'une seule fois.
Code:
$user_query = new WP_User_Query(
array(
'role' => 'member',
'orderby' => 'registered',
'order' => 'DESC',
'meta_query' => array(
array(
'key' => 'onTrial',
'value' => '1',
),
),
)
);
echo '<pre>';
print_r($user_query->results);
echo '</pre>';
Sorties (avec beaucoup d'autres):
[54] => WP_User Object
(
[data] => stdClass Object
(
[ID] => 10410
[user_login] => [email protected]
[user_pass] => $P$XXXXXXX
[user_nicename] => XXXXXXX-XXXXXXX
[user_email] => [email protected]
[user_url] =>
[user_registered] => 2016-02-15 10:52:57
[user_activation_key] =>
[user_status] => 0
[display_name] => XXXXXXX XXXXXXX
)
[ID] => 10410
[caps] => Array
(
[member] => 1
)
[cap_key] => wp_capabilities
[roles] => Array
(
[0] => member
)
[allcaps] => Array
(
[read] =>
[no_admin_bar] => 1
[member] => 1
)
[filter] =>
)
[55] => WP_User Object
(
[data] => stdClass Object
(
[ID] => 10410
[user_login] => [email protected]
[user_pass] => $P$XXXXXXX
[user_nicename] => XXXXXXX-XXXXXXX
[user_email] => [email protected]
[user_url] =>
[user_registered] => 2016-02-15 10:52:57
[user_activation_key] =>
[user_status] => 0
[display_name] => XXXXXXX XXXXXXX
)
[ID] => 10410
[caps] => Array
(
[member] => 1
)
[cap_key] => wp_capabilities
[roles] => Array
(
[0] => member
)
[allcaps] => Array
(
[read] =>
[no_admin_bar] => 1
[member] => 1
)
[filter] =>
)
Maintenant, je ne peux évidemment pas vous montrer les détails, mais notez l'ID et le temps d'enregistrement ainsi que les numéros de tableau dans lesquels ils apparaissent, [54]
et [55]
Personne d'autre n'apparaît deux fois.
Merci d'avance - toute contribution appréciée, petite ou grande.
Essayez ceci pour des coups de pied ...
Remarque: Ne fonctionne pas avec WP_User_Query (?)
add_filter('posts_distinct', 'user_meta_query_distinct');
//your query here...
remove_filter('posts_distinct', 'user_meta_query_distinct');
function user_meta_query_distinct() {
return "DISTINCT";
}
Pouvez-vous essayer d'ajouter 'relation' => 'OR'
à votre meta_query:
$user_query = new WP_User_Query(
array(
'role' => 'member',
'orderby' => 'registered',
'order' => 'DESC',
'meta_query' => array(
'relation' => 'OR', //should result in a DISTINCT query
array(
'key' => 'onTrial',
'value' => '1',
),
),
)
);
Voir ce diff:
https://core.trac.wordpress.org/attachment/ticket/17582/17582.4.diff
if ( 'OR' == $meta_query->relation ) {
$this->query_fields = 'DISTINCT ' . $this->query_fields;
}
Dépisté avec la permission de ce billet trac .
Voyez si ça marche ...