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

使用wc_get_products()按名称和类别查询WooCommerce产品异常

问题解决方案

核心问题:参数使用错误

你的代码里两个问题都是因为参数用法不符合WooCommerce的实际逻辑:

  • name参数匹配slug而非标题:name是WordPress原生查询参数,对应文章的post_name字段(即产品slug),并非产品标题/名称。要匹配标题必须用title参数。
  • product_category_id与name参数冲突导致分类过滤失效:这个高层参数在和name(实际查询slug)结合时,生成的SQL查询未正确关联产品分类表,导致分类条件不生效。改用更可靠的category参数或tax_query即可解决。

修正后的代码方案

方案1:简洁版(使用高层参数)

$args = array(
    'status'    => 'publish', // 仅查询已发布产品
    'return'    => 'objects', // 返回WC_Product对象
    'limit'     => 1, // 只返回1个结果
    'category'  => array(6), // 指定分类ID
    'title'     => 'test' // 匹配产品标题
);
$products = wc_get_products($args);

方案2:精确版(使用tax_query避免参数冲突)

如果方案1仍有问题,用底层分类查询参数确保条件正确执行:

$args = array(
    'status'    => 'publish',
    'return'    => 'objects',
    'limit'     => 1,
    'title'     => 'test',
    'tax_query' => array(
        array(
            'taxonomy' => 'product_cat', // 产品分类taxonomy
            'field'    => 'term_id', // 按分类ID匹配
            'terms'    => array(6), // 目标分类ID
            'operator' => 'IN' // 匹配包含该分类的产品
        )
    )
);
$products = wc_get_products($args);

补充说明

  • 若需要模糊匹配标题(比如包含"test"的标题),可以用s参数替代title:'s' => 'test',该参数会搜索标题、产品描述等字段。
  • 确认分类ID正确性:在WooCommerce后台产品分类页面,查看分类URL中的tag_ID值,确保为6。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:57:18