我想要在woocommerce rest api中通过meta_data过滤产品。我试过了,但是没用:
$data = array(
'numberposts' => -1,
'post_type' => 'product',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'package_type',
'value' => $filters['ad_type'],
'compare' => '='
),
array(
'key' => 'package_location',
'value' => $filters['ad_location'],
'compare' => '='
),
array(
'key' => 'package_price_range',
'value' => $filters['ad_price_range'],
'compare' => '='
)
)
);
$_results = $this->woocommerce->get('products', $data);
似乎$ data过滤器并不流行,它将取回没有过滤器的所有产品。所以问题是,如何在api请求中使用元过滤器?
答案 0 :(得分:1)
我找到了解决方案。 扩展/覆盖woocommerce / packages / woocommerce-rest-api / src / Controllers / Version3 / class-wc-rest-products-controller.php控制器,
输入以下内容:
if ( ! empty( $request['custom_filter'] && ! empty( $request['meta_key'] ) ) ) {
$args['meta_query'] = $this->add_meta_query( $args, array(
'key' => $request['meta_key'],
'value' => $request['meta_value'],
'compare' => '=',
) );
}
和tada.wav,您可以通过meta_query进行过滤!