У меня есть пользовательский тип сообщения под названием «Эпизод». Прикрепленный к «эпизоду», у меня есть специальная таксономия, называемая «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'
),
но я все еще получаю тот же результат.
источник