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

未选择分类时如何获取所有WooCommerce产品?调整terms参数方法

解决方案

要实现未选择分类时展示所有产品,核心是动态控制是否添加分类过滤条件,而不是强行设置terms参数——如果terms传入无效值(比如0),会导致查询返回空结果,完全不符合需求。

具体修改思路和代码如下:

  • 先初始化基础查询参数,暂不包含tax_query
  • 仅当$_POST['category']存在有效值时,再添加分类过滤的tax_query条件
// 初始化基础查询参数
$args = array(
    'post_type'      => 'product',
    'numberposts'    => -1,
    'post_status'    => 'publish',
    'fields'         => 'ids',
);

// 检查是否有有效的分类ID传入
$category_id = intval($_POST['category']);
if ($category_id > 0) {
    // 仅当分类ID有效时,添加tax_query过滤条件
    $args['tax_query'] = array(
        array(
            'taxonomy' => 'product_cat',
            'field'    => 'term_id',
            'terms'    => $category_id,
            'operator' => 'IN'
        )
    );
}

$id_posts = get_posts($args);

关键说明

  • 未选择分类时,$_POST['category']为空,经intval转换后为0,此时不会添加tax_query,查询会返回所有已发布的产品
  • 选择有效分类(ID大于0)时,才会启用分类过滤,只返回对应分类下的产品
  • 这种写法避免了无效tax_query导致的空结果问题,同时保证两种场景的逻辑正确性

内容的提问来源于stack exchange,提问作者pasra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:39:07