Woocommerce 产品的 WP_Query 中的按价格问题

问题描述 投票:0回答:1

我试图按价格对我的产品进行排序,但效果不佳,它只返回我的 56 个产品中的 9 个。 我所有的产品都是相似的,都是具有变化和属性的产品,所以我不知道为什么会发生这种情况。

这是我获取产品的代码,如果我不使用“orderby”,它就可以正常工作。

$args = [
"posts_per_page" => 20,
"paged"=> "1",
"tax_query" => [
    [
        "taxonomy" => "product_cat",
        "field" => "term_id",
        "terms" => "213",
        "operator" => "IN",
        "include_children" => false
    ],
    [
        "taxonomy" => "pa_color",
        "field" => "term_id",
        "terms" => [
            "red"
        ],
        "operator" => "IN"
    ],
    "relation" => "AND"
],
"post_type" => [
    "product",
    "product_variation"
],
"meta_query" => [
    [
        "key" => "_price",
        "value" => [
            "20",
            "30"
        ],
        "compare" => "BETWEEN",
        "type" => "NUMERIC"
    ],
    "relation" => "AND"
],
"orderby" => "meta_value_num",
"meta_key" => "_price",
"order" => "ASC"
]

$loop = new WP_Query( $args );
php wordpress product-variations product-price
1个回答
0
投票

1) 关于产品变化:

  • Woocommerce 自定义分类为产品类别产品标签未在产品变体中启用,但在其父变量产品中启用。

  • 产品属性(针对变体)无法通过税务查询获得。对于产品变化,它们设置为元数据,例如

    attribute_pa_color
    (所有以
    attribute_
    开头的键)
    并且该值是每个键的术语 slug

因此,您无法使查询同时适用于两种帖子类型

product
product_variation

注意:产品变体默认情况下不会在产品循环中显示。它们仅显示在购物车商品和订单商品中

2)关于可变产品:

  • 关于可变产品的价格(自 WooCommerce 3+ 起),其价格(元键
    _prices
    )与其中的变化一样多。因此,查询元键
    _prices
    可能会出错,因为将采用第一个可用价格(或者可能是全部或没有)
  • 关于产品属性,就不那么简单了,有2种:
    • 普通产品属性(如简单产品)
    • 为变体启用产品属性。

注意: 可变产品默认显示在产品循环中,但它们永远不会显示在购物车商品和订单商品中

出于所有这些原因您的查询无论如何都无法正常工作即使有或没有

"orderby" => "meta_value_num",

您的查询中还存在一些错误或错误,例如:

  • 在您的
    tax_query
    "taxonomy" => "pa_color",
    "field"
    需要是
    "slug"
    而不是
    "term_id"
  • 'post_status' => 'publish',
    不见了。
  • 不需要
  • "operator" => "IN"
    "relation" => "AND"
    ,因为它们是默认参数。

所以这并不能解决你的问题,但告诉你这是不可能用这种方式做到的。

© www.soinside.com 2019 - 2024. All rights reserved.