web-dev-qa-db-fra.com

Le paramètre "tax_query" ne fonctionne pas avec WP_Query

J'ai un type de message personnalisé appelé "épisode". Attaché à 'épisode', j'ai une taxonomie personnalisée appelée 'type_vidéo' qui contient deux termes: "bonus-footage" et "épisode"; "épisode" contient deux termes enfants "saison 1" et "saison 2" (d'autres saisons seront ajoutées à l'avenir). Je souhaite uniquement récupérer le message le plus récent du type "épisode", sans inclure aucun message 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 une publication dans l'un des termes de "saison" est la plus récente, mais si une publication dans "bonus-footage" est la plus récente, elle est chargée. En d'autres termes, mes paramètres "tax_query" semblent n'avoir aucune incidence sur la requête. Est-ce que je ne formate pas correctement le "tax_query" ou est-ce que quelque chose me manque?

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.

15
Josh Farneman

Le paramètre tax_query est un tableau de tableaux , pas simplement un tableau.

Ce:

'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'
    )
),
37
Chip Bennett