web-dev-qa-db-fra.com

WP_Query problème tax_query

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?

2
user3256672

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.

2
user3256672