我试图按价格对我的产品进行排序,但效果不佳,它只返回我的 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 );
1) 关于产品变化:
Woocommerce 自定义分类为产品类别或产品标签未在产品变体中启用,但在其父变量产品中启用。
产品属性(针对变体)无法通过税务查询获得。对于产品变化,它们设置为元数据,例如
attribute_pa_color
(所有以 attribute_
开头的键) 并且该值是每个键的术语 slug 因此,您无法使查询同时适用于两种帖子类型
product
和 product_variation
。
注意:产品变体默认情况下不会在产品循环中显示。它们仅显示在购物车商品和订单商品中
2)关于可变产品:
_prices
)与其中的变化一样多。因此,查询元键_prices
可能会出错,因为将采用第一个可用价格(或者可能是全部或没有)。 注意: 可变产品默认显示在产品循环中,但它们永远不会显示在购物车商品和订单商品中。
出于所有这些原因您的查询无论如何都无法正常工作即使有或没有
。"orderby" => "meta_value_num",
您的查询中还存在一些错误或错误,例如:
tax_query
中 "taxonomy" => "pa_color",
"field"
需要是 "slug"
而不是 "term_id"
。'post_status' => 'publish',
不见了。"operator" => "IN"
、"relation" => "AND"
,因为它们是默认参数。 所以这并不能解决你的问题,但告诉你这是不可能用这种方式做到的。