私のWordPressテーマには、「コレクション」と呼ばれるカスタム分類法があります。カスタム分類法は階層的であるため、サブコレクションがあります。
「Books」というコレクションと「Novels」というサブコレクションがあります。ちょうど「本」にあるいくつかの投稿と「小説」にあるいくつかの投稿があります。「Books」コレクションのページには、「Novels」サブコレクションの投稿ではなく、メインの「Books」コレクションの投稿のみを表示したいと思います。ただし、デフォルトでは、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) );
}
}