WordPress循环与tax_query:单下拉筛选自定义文章类型失效求助
解决WordPress自定义文章类型AJAX单条件筛选失效问题
你的问题核心是仅当两个筛选参数同时存在时才构建tax_query,导致单个参数提交时完全跳过了分类筛选逻辑,以下是修复后的代码:
$args = array( 'orderby' => 'date', 'order' => $_POST['date'], 'post_type' => 'career', 'post_status' => 'publish' ); // 初始化分类查询数组 $tax_query = array(); // 检查职位分类参数是否存在并有效 if (isset($_POST['categoryfilter']) && !empty($_POST['categoryfilter'])) { $tax_query[] = array( 'taxonomy' => 'job-category', 'field' => 'id', 'terms' => $_POST['categoryfilter'] ); } // 检查国家分类参数是否存在并有效 if (isset($_POST['taxonomyfilter']) && !empty($_POST['taxonomyfilter'])) { $tax_query[] = array( 'taxonomy' => 'job-country', 'field' => 'id', 'terms' => $_POST['taxonomyfilter'] ); } // 如果有至少一个分类条件,才添加tax_query到参数中 if (!empty($tax_query)) { // 多个条件时用AND关联,单个条件无需设置relation参数 if (count($tax_query) > 1) { $tax_query['relation'] = 'AND'; } $args['tax_query'] = $tax_query; }
关键修复点:
- 不再依赖两个参数同时存在的判断,而是分别检查每个筛选参数,存在则添加对应的分类查询规则
- 动态构建
tax_query数组,只有当数组不为空时才添加到$args中 - 仅当存在多个筛选条件时才设置
relation => 'AND',单个条件时无需设置该参数,WordPress会自动处理
修改后即可实现:
- 仅选职位分类:只展示匹配该分类的职位
- 仅选国家分类:只展示匹配该国家的职位
- 同时选两个:展示同时满足两个条件的职位
内容的提问来源于stack exchange,提问作者Julia Galden
相关产品推荐
相关产品推荐

