Параметр tax_query не работает с WP_Query

17

У меня есть пользовательский тип сообщения под названием «Эпизод». Прикрепленный к «эпизоду», у меня есть специальная таксономия, называемая «video_type», которая содержит два термина: «бонус-кадры» и «эпизод»; «Эпизод» содержит два дочерних термина «сезон-1» и «сезон-2» (другие сезоны будут добавлены в будущем). Я хочу получить только самые последние посты типа «эпизод», но не включать посты из термина «бонусные кадры». Ниже приведен код, который я использую для этого:

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

Запрос работает, как и ожидалось, если сообщение в одном из терминов «сезон» является самым новым, но если сообщение в «бонусном материале» самое новое, то оно загружается. Другими словами, мои параметры "tax_query" не влияют на запрос. Правильно ли я форматирую "tax_query" или я что-то упускаю?

Я также попытался установить "tax_query", как показано ниже:

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

но я все еще получаю тот же результат.

Джош Фарнеман
источник

Ответы:

42

tax_queryПараметр представляет собой массив массивов , а не просто массив.

Эта:

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

Должно быть вместо этого:

'tax_query' => array(
    array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
    )
),
Чип Беннетт
источник
1
Спасибо, Чип. Мне любопытно, почему Wordpress построил это так?
Джош Фарнеман
3
Таким образом, можно выполнить несколько налоговых запросов, используя логические значения. См. Связанную запись Кодекса в разделе « Обработка нескольких таксономий ».
Чип Беннетт
1
Работал как шарм для меня! Спасибо, мужик, на этом я ударился головой о стену!
Чарльз Блэквелл
Кажется, я не могу понять, как перевести это в параметр url и использовать ли он на самом деле WP_Query. Это просто продолжает игнорироваться.
Realgeek