如何在Woocommerce REST API中按元过滤产品?

时间:2020-07-20 11:38:40

标签: wordpress woocommerce woocommerce-rest-api

我想要在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请求中使用元过滤器?

1 个答案:

答案 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进行过滤!

相关问题