要在WordPress分类归档中排除子分类文章,您可以通过修改查询来实现这一目标。您可以使用 pre_get_posts
钩子来自定义WordPress查询。
以下是一种方法,您可以在主题的 functions.php
文件中添加以下代码:
function exclude_subcategory_posts( $query ) {
if ( $query>is_category() && $query>is_main_query() ) {
$cat_id = $query>get_queried_object_id();
$children = get_term_children( $cat_id, 'category' );
// If the category has children (subcategories), exclude posts from subcategories
if ( ! empty( $children ) ) {
$child_cat_ids = array_map( 'intval', $children );
$query>set( 'category__not_in', $child_cat_ids );
}
}
}
add_action( 'pre_get_posts', 'exclude_subcategory_posts' );
这个函数会检查当前是否在分类归档页面,并且分类有子分类。如果有子分类,它将排除子分类的文章。请确保将 category
替换为您实际在WordPress中使用的分类法名称(可能是不同的分类法名称,如 product_category
等)。
在代码中,我们首先检查是否在分类归档页面,然后获取当前分类的子分类。如果有子分类,我们将这些子分类的ID添加到查询参数中,以排除这些子分类的文章。