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

How can I filter products by meta in 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 请求中使用元过滤器?

我找到了解决办法。 Extend/override 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!

进行过滤