J'essaie de créer une requête pour les utilisateurs utilisant WP_User_Query()
. Je dois filtrer les utilisateurs par rôle shop_manager
et par une taxonomie personnalisée appelée shop-category
et par l'ID du terme de taxonomie actuelle.
Le code que j'ai jusqu'à présent:
<?php
// WP_User_Query arguments
$args = array (
'role' => 'shop_manager',
'order' => 'DESC',
'orderby' => 'user_registered',
'tax_query' => array(
array('taxonomy' =>
'shop-category',
'field' => 'id',
'terms' => $term_id ) )
);
// The User Query
$user_query = new WP_User_Query( $args );
// The User Loop
if ( ! empty( $user_query->results ) ) {
foreach ( $user_query->results as $user ) {
echo '<li><span>' . esc_html( $user->shop_name ) . '</span></li>';
}
} else {
// no users found
}
?>
Pour obtenir le terme ID, j'utilisais ce code
<?php $queried_object = get_queried_object();
$term_id = $queried_object->term_id;
echo 'ID = '. $term_id;?>
Maintenant, il montre tous les utilisateurs avec le rôle shop_manager
. On dirait que la taxonomie ne fonctionne pas.
Apparemment, il n'y a pas encore d'implémentation principale de 'tax_query'
dans WP_User_Query
.
Vérifiez le billet ici pour plus d'informations -> https://core.trac.wordpress.org/ticket/31383
Néanmoins, il existe une autre façon d'utiliser get_objects_in_term
$taxonomy = 'shop-category';
$users = get_objects_in_term( $term_id, $taxonomy );
if(!empty($users)){
// WP_User_Query arguments
$args = array (
'role' => 'shop_manager',
'order' => 'DESC',
'orderby' => 'user_registered',
'include' => $users
);
// The User Query
$user_query = new WP_User_Query( $args );
// The User Loop
if ( ! empty( $user_query->results ) ) {
foreach ( $user_query->results as $user ) {
echo '<li><span>' . esc_html( $user->shop_name ) . '</span></li>';
}
}
else {
// no shop_manager found
}
}
else {
// no users found
}
Il n'y a pas de paramètre tax_query
pour la classe WP_User_Query
. Puisque vous avez marqué la question avec user-meta
, je ne peux que supposer que vous stockez la ID
(ou même le nom du terme lui-même?) D'un terme shop-category
particulier en tant que méta-entrée d'utilisateur.
Dans ce cas, vous auriez besoin de quelque chose comme ceci:
// The 'WP_User_Query' arguments array
$args = array(
'role' => 'shop_manager',
'order' => 'DESC',
'orderby' => 'user_registered',
'meta_key' => 'shop_name', // Is this the meta key you are using?
'meta_value' => 'the_term_name_or_term_id', // Based on however you store your meta data
'meta_compare' => '=',
);