J'ai un type de message personnalisé Wine
, qui a un Champ ACF qui renvoie à un autre type de message personnalisé Producer
en tant que relation post_object
. Dans mon producteur, j'ai une taxonomie personnalisée nommée Region
.
Ce que j'essaie de faire, c'est d'interroger tous les vins blancs dont la région du producteur est x.
Voici ce que j'ai essayé:
$args = array(
'post_type' => 'wines',
'posts_per_page' => 12,
'tax_query' => array(
array(
'taxonomy' => 'type',
'field' => 'slug',
'terms' => 'white'
),
array(
'taxonomy' => 'region',
'field' => 'slug',
'terms' => 'alsace'
)
)
);
Le problème que j'ai est que le tax_query
est exécuté sur le wine
et non c'est producer
. J'ai consulté la documentation de WP_Query et je n'arrive pas à trouver un exemple pour y parvenir.
Quelqu'un pourrait-il me guider s'il vous plaît? Merci.
J'ai récupéré la liste des identifiants des producteurs pour l'ajouter au meta_query
:
$producers = new WP_Query(
array(
'post_type' => 'producers',
'posts_per_page' => -1
)
);
$producersIds = wp_list_pluck($producers, 'ID');
Après cela, j'ai mis à jour le $args
en ajoutant la méta requête:
'meta_query' => array(
array(
'key' => 'producer',
'value' => $producerIds,
'compare' => 'IN'
)
)
Comme @Florian l'a souligné, nous n'avons pas besoin d'utiliser la fonction wp_list_pluck, nous pourrions simplement ajouter le 'fields' => 'ids'
au WP_Query pour récupérer la liste des identifiants:
$producers = new WP_Query(
array(
'fields' => 'ids',
'post_type' => 'producers',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'region',
'field' => 'slug',
'terms' => 'alsace'
)
)
)
);
Ensuite, récupérez les vins en remplaçant $ ProducerIdsby
$ producteurs-> posts`.
Tout d'abord, j'ai dû récupérer les producteurs de la région:
$producers = new WP_Query(
array(
'post_type' => 'producers',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'region',
'field' => 'slug',
'terms' => 'alsace'
)
)
)
);
Ensuite, je récupère la liste des identifiants avec wp_list_pluck :
$producerIds = wp_list_pluck($producers->posts, 'ID');
Et enfin, je récupère les vins avec les identifiants des producteurs:
$wines = new WP_Query(
array(
'post_type' => 'wines',
'posts_per_page' => 12,
'tax_query' => array(
array(
'taxonomy' => 'type',
'field' => 'slug',
'terms' => 'white'
)
),
'meta_query' => array(
array(
'key' => 'producer',
'value' => $producerIds,
'compare' => 'IN'
)
)
)
);