要在WordPress分类归档中排除子分类文章,您可以通过修改查询来实现这一目标。您可以使用 pre_get_posts 钩子来自定义WordPress查询。

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添加到查询参数中,以排除这些子分类的文章。