我的 WordPress 主题有一个名为“Collections”的自定义分类法。自定义分类是分层的,因此有子集合。
我有一个名为“Books”的集合和一个名为“Novels”的子集合。有些帖子只在“书籍”中,有些帖子在“小说”中。我希望“书籍”集合的页面只显示主“书籍”集合中的帖子,而不是“小说”子集合中的帖子。但默认情况下,WordPress 在分类查询中包含“子集合”中的帖子。
如何从我的分类查询中排除子术语中的帖子?使用类别这很容易,但似乎没有内置的方法可以使用自定义分类法来做到这一点。
更新: Jan 的解决方案效果很好。这是我使用的代码,位于 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) );
}
}