You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:01:55