web-dev-qa-db-fra.com

Comment combiner meta_query et post__in dans WP_Query

J'ai construit une requête complexe qui devrait faire 3 choses:

  1. sélectionnez les publications avec des identifiants dans le tableau $ additional_ids à l'aide de post__in;
  2. ignorer les publications avec des identifiants dans le tableau $ ignore_ids en utilisant post__not_in;
  3. sélectionnez posts avec une combinaison de valeurs cpt (par exemple, un animal, est bleu et mange de l'herbe) en utilisant meta_query.

Voici ce que j'ai jusqu'à présent:

$args_assets = array(
        'post_type' => 'assets',
        'posts_per_page' => -1,
        'post__in' => $additional_ids,
        'post__not_in' => $ignore_ids,
        'meta_query' => array(
            'relation' => 'AND',
            $query_animal,
            $query_color,
            $query_food,
        ),
        'orderby' => 'title',
        'order' => 'asc',
        );

La requête fonctionne correctement sans la ligne 'post__in' => $ additional_ids. Dès que j'ajoute l'argument post__in, la requête renvoie un résultat vide.

Est-il possible de combiner post__in avec une méta_query? Si oui, quelle est la meilleure méthode?

Merci d'avance pour votre aide!

1
Richard Tinkler

post__in et post__not_in sont mutuellement exclusifs.

Remarque: vous ne pouvez pas combiner post__in et post__not_in dans la même requête.

http://codex.wordpress.org/Class_Reference/WP_Query

Effectuez la requête avec la combinaison post__in et meta_query ou créez la requête avec la combinaison post__not_in et meta_query. Aucun d'entre eux, mais pas l'union d'eux.

4
CodeMascot