WordPress:如何在影片归档页排除特定自定义分类(含子项)的文章?
解决WordPress自定义文章类型归档页排除指定分类(含子项)的问题
你的代码核心问题是定义了分类查询条件但没有将其绑定到主查询对象,导致排除规则根本没生效。以下是修正后的完整代码:
add_action( 'pre_get_posts', 'films_query' ); function films_query( $query ) { // 仅在前台、主查询、films归档页生效 if ( !is_admin() && $query->is_main_query() && is_post_type_archive( 'films' ) ) { // 构建分类排除查询 $tax_query = array( array( 'taxonomy' => 'categorie_films', 'field' => 'term_id', 'terms' => 37, 'operator' => 'NOT IN', 'include_children' => true, // 确保排除该分类下的所有子项 ) ); // 绑定分类查询到主查询(原代码缺失的核心步骤) $query->set( 'tax_query', $tax_query ); // 其他查询参数设置 $query->set( 'posts_per_page', '-1' ); $query->set( 'post_status', 'publish' ); $query->set( 'orderby', 'title' ); $query->set( 'order', 'ASC' ); } }
关键说明:
$query->set( 'tax_query', $tax_query )是实现分类排除的核心,必须将构建好的分类查询条件绑定到主查询对象include_children => true会自动把ID37分类下的所有子术语也纳入排除范围,完全匹配你的需求- 前置条件判断确保代码仅在目标页面生效,不会干扰后台或其他页面的查询逻辑
内容的提问来源于stack exchange,提问作者Trint33
相关产品推荐
相关产品推荐

