WordPress文章查询指定分类别名筛选失效,移除别名正常返回如何解决?
WordPress文章查询分类筛选失效问题修复方案
问题根因
- 分类法名称错误:WordPress 内置文章的默认分类法标识为
category,你代码中写的post_category是文章写入接口的参数键,不是分类查询的合法分类法名称。 - 参数覆盖问题:两段条件判断都直接给
$args['tax_query']赋值,会导致后执行的排除分类逻辑直接覆盖前面的按分类筛选逻辑,两个参数同时传的情况下前面的筛选配置直接失效。
修复后代码
$args = array( 'post_type' => 'post', 'posts_per_page' => intval( $items ), 'paged' => $paged ); // 初始化 tax_query 数组,避免覆盖问题 $args['tax_query'] = array(); // 多个筛选条件的关系,默认是AND,需要满足所有条件,可按需调整为OR $args['tax_query']['relation'] = 'AND'; if ( ! empty( $cat_slug ) ) { $args['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => $cat_slug ); } if ( ! empty( $exclude_cat_slug ) ) { $args['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => $exclude_cat_slug, 'operator' => 'NOT IN' ); } // 无筛选条件时移除参数,避免查询报错 if ( count($args['tax_query']) <= 1 ) { unset( $args['tax_query'] ); }
额外验证项
- 确认传入的
$cat_slug是后台分类编辑页中实际存在的别名,注意区分大小写,避免拼写错误。 - 如果你查询的是自定义分类法的内容,需要把代码中的
category替换为对应自定义分类法的注册标识。 - 如果不需要匹配子分类的文章,可以在 tax_query 的子数组中添加
'include_children' => false参数。
内容的提问来源于stack exchange,提问作者Deepmanyu Rajpurohit
相关产品推荐
相关产品推荐

