Моя тема WordPress имеет настраиваемую таксономию под названием «Коллекции». Пользовательская таксономия является иерархической, поэтому есть вложенные коллекции.
У меня есть сборник под названием «Книги» и под-сборник под названием «Романы». Некоторые сообщения находятся только в «Книгах», а некоторые - в «Романах». Я хочу, чтобы на странице коллекции «Книги» отображались только сообщения из основной коллекции «Книги», а не сообщения из вложенной коллекции «Романы». Но по умолчанию WordPress включает сообщения в «подколлекции» в запросе таксономии.
Как мне исключить сообщения в дочерних терминах из моего запроса таксономии? С категориями это легко сделать, но, похоже, нет встроенного способа сделать это с пользовательскими таксономиями.
Обновление: решение Яна сработало отлично. Вот код, который я использовал, размещенный над циклом в index.php:
// if is taxonomy query for 'collections' taxonomy, modify query so only posts in that collection (not posts in subcollections) are shown.
if (is_tax()) {
if (get_query_var('collection')) {
$taxonomy_term_id = $wp_query->queried_object_id;
$taxonomy = 'collection';
$unwanted_children = get_term_children($taxonomy_term_id, $taxonomy);
$unwanted_post_ids = get_objects_in_term($unwanted_children, $taxonomy);
// merge with original query to preserve pagination, etc.
query_posts( array_merge( array('post__not_in' => $unwanted_post_ids), $wp_query->query) );
}
}