Lorsque j'appelle WP_Query avec une requête fiscale ou une catégorie__in, je reçois uniquement les publications de la première catégorie dans un tableau des catégories demandées.
$query = new WP_Query(
array(
"tax_query" => array(
array(
"taxonomy" => "category",
"field" => "term_id",
"terms" => array(1, 2, 3)
)
),
"posts_per_page" => -1
)
);
Voici la requête sql de $ query-> request:
SELECT wp_posts.*
FROM wp_posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_relationships AS tt1 ON (wp_posts.ID = tt1.object_id)
INNER JOIN wp_term_relationships AS tt2 ON (wp_posts.ID = tt2.object_id)
WHERE 1=1
AND (wp_term_relationships.term_taxonomy_id IN (1,
2,
3)
AND tt1.term_taxonomy_id IN (1)
AND tt2.term_taxonomy_id IN (1))
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'future'
OR wp_posts.post_status = 'draft'
OR wp_posts.post_status = 'pending'
OR wp_posts.post_status = 'private')
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
La liste des résultats ne concerne que les messages de la catégorie 1. Quel est le problème avec ma requête?
Problème trouvé. J'ai remplacé:
$posts = $query->get_posts();
avec:
$posts = array();
if ($query->have_posts()){
while ($query->have_posts()){
$query->next_post();
array_Push($posts, $query->post);
}
}
Et tout fonctionne maintenant.