我有可变产品,它的属性名称为:'数量'其变体有' 100' 200' 200' 500'。所有这些变化都有定期价格。我想过滤和显示变量产品,其中包含数量变化' 200'并且有正常价格10。
我正在使用此代码,但它显示了所有具有数量变化的产品' 200'但不能按变化的正常价格进行过滤。
$query = array(
'post_status' => 'publish',
'post_type' => array('product', 'product_variation'),
'posts_per_page' => 10,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'pa_quantity',
'field' => 'term_id',
'terms' => '67',
),
'meta_query' => array(
array(
'key' => '_regular_price',
'value' => 10,
'compare' => '=',
'type' => 'NUMERIC'
),
),
)
);
例如,我使用的是属性Quantity的第200个id,即67.
答案 0 :(得分:2)
所以,我终于找到了答案......这可能会对将来有所帮助。
以下是首先过滤属性Quantity的变量产品的查询,该变量产品的期限为75,然后它将进一步筛选价格为500的变体的结果。
$query = array(
'post_status' => 'publish',
'post_type' => array('product', 'product_variation'),
'posts_per_page' => 10,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'pa_quantity',
'field' => 'term_id',
'terms' => '75',
),
),
'meta_key' => '_price',
'meta_value' => 500,
);
$wc_query = new WP_Query($query);
答案 1 :(得分:1)
在您的示例代码中,您在放入元查询之前没有关闭tax_query数组。
如果您只有一个元字段值,也可以尝试不使用元查询。相反,定义元键和元值,如下所示:
$query = array(
'post_status' => 'publish',
'post_type' => array('product', 'product_variation'),
'posts_per_page' => 10,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'pa_quantity',
'field' => 'term_id',
'terms' => '67',
),
),
'meta_key' => '_regular_price',
'meta_value' => 10,
);
以下是在启动meta_query之前关闭tax_query的查询的更正版本
$query = array(
'post_status' => 'publish',
'post_type' => array('product', 'product_variation'),
'posts_per_page' => 10,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'pa_quantity',
'field' => 'term_id',
'terms' => '67',
),
),
'meta_query' => array(
array(
'key' => '_regular_price',
'value' => 10,
'compare' => '=',
'type' => 'NUMERIC'
),
),
);