Parametr „tax_query” nie działa z WP_Query

18

Mam niestandardowy typ posta o nazwie „odcinek”. Załączony do „odcinka” Mam niestandardową taksonomię o nazwie „typ_video”, która zawiera dwa terminy: „bonus-footage” i „odcinek”; „odcinek” zawiera dwa terminy dla dzieci „sezon-1” i „sezon-2” (inne sezony zostaną dodane w przyszłości). Chcę pobrać tylko najnowszy post typu „odcinek”, ale nie mogę zawierać żadnych postów z terminu „bonus-footage”. Poniżej znajduje się kod, którego używam do tego:

<?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;
?>

Zapytanie działa zgodnie z oczekiwaniami, jeśli post w jednym z terminów „sezonowych” jest najnowszy, ale jeśli post w „nagraniu dodatkowym” jest najnowszy, to wczytuje to. Innymi słowy, moje parametry „tax_query” wydają się nie mieć wpływu na zapytanie. Czy nie formatuję poprawnie zapytania podatkowego, czy brakuje mi czegoś innego?

Próbowałem też ustawić „tax_query” jak poniżej:

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

ale wciąż otrzymuję ten sam wynik.

Josh Farneman
źródło

Odpowiedzi:

44

Ten tax_queryparametr to tablica tablic , a nie tylko tablica.

To:

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

Zamiast tego powinno być:

'tax_query' => array(
    array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
    )
),
Chip Bennett
źródło
1
Dzięki Chip. Jestem ciekawy, dlaczego Wordpress tak to zbudował?
Josh Farneman
3
Aby można było wykonać wiele zapytań podatkowych, korzystając z booleanów. Zobacz połączony wpis w Kodeksie w sekcji „Obsługa wielu taksonomii ”.
Chip Bennett
1
Dla mnie zadziałało jak urok! Dzięki człowieku, waliłem głową w ścianę!
Charles Blackwell
Nie mogę wymyślić, jak przetłumaczyć to na parametr adresu URL i pozwolić, aby był on faktycznie używany przez WP_Query. Po prostu się ignoruje.
realgeek