Le paramètre «tax_query» ne fonctionne pas avec WP_Query

17

J'ai un type de message personnalisé appelé «épisode». Attaché à «épisode», j'ai une taxonomie personnalisée appelée «video_type» qui contient deux termes: «bonus-Footage» et «episode»; "épisode" contient deux termes enfants "saison-1" et "saison-2" (d'autres saisons seront ajoutées ultérieurement). Je souhaite récupérer uniquement le message le plus récent du type "épisode", mais ne pas inclure les messages du terme "bonus-Footage". Voici le code que j'utilise pour cela:

<?php
$some_args = array(
    'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'bonus-footage',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'NOT IN'
     ),
    'posts_per_page' => 1,
    'post_type' => 'episode',
);

$s = new WP_Query( $some_args );

if ( $s->have_posts() ) : $s->the_post();
    // Do something with this post.
endif;
?>

La requête fonctionne comme prévu si un article dans l'un des termes «saison» est le plus récent, mais si un article dans «bonus-Footage» est le plus récent, il charge celui-là. En d'autres termes, mes paramètres "tax_query" semblent n'avoir aucun effet sur la requête. Ne suis-je pas en train de formater correctement "tax_query" ou manque-t-il autre chose?

J'ai également essayé de définir "tax_query" comme ci-dessous:

'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
    'include_children' => true,
        'operator' => 'IN'
),

mais j'obtiens toujours le même résultat.

Josh Farneman
la source

Réponses:

42

Le tax_queryparamètre est un tableau de tableaux , pas seulement un tableau.

Cette:

'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
),

Devrait plutôt être ceci:

'tax_query' => array(
    array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
    )
),
Chip Bennett
la source
1
Merci Chip. Je suis curieux de savoir pourquoi Wordpress l'a construit de cette façon?
Josh Farneman
3
Ainsi, plusieurs requêtes fiscales peuvent être effectuées à l'aide de booléens. Voir l'entrée du Codex liée, sous la section " Gestion de taxonomie multiple ".
Chip Bennett
1
A fonctionné à merveille pour moi! Merci mec, je me cognais la tête contre le mur sur celui-ci!
Charles Blackwell
Je n'arrive pas à comprendre comment traduire cela en un paramètre d'URL et le faire réellement utiliser par WP_Query. Il continue juste d'être ignoré.
realgeek