Le paramètre “tax_query” ne fonctionne pas avec WP_Query

12

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 "episode"; "épisode" contient deux termes enfants "saison 1" et "saison 2" (d'autres saisons seront ajoutées ultérieurement). Je souhaite uniquement récupérer le message le plus récent du type "épisode" mais n'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 "saison" est la plus récente, mais si une publication dans "bonus-footage" est la plus récente, elle charge celle-ci. En d'autres termes, mes paramètres "tax_query" ne semblent pas avoir d'incidence sur la requête. Est-ce que je ne formate pas correctement le "tax_query" ou est-ce que je manque quelque chose d'autre?

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.

    
posée Josh Farneman 16.04.2012 - 17:52

1 réponse

36

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

Ceci:

'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'
    )
),
    
réponse donnée Chip Bennett 16.04.2012 - 17:58

Lire d'autres questions sur les étiquettes