WooCommerce - 使用 Postman 获取具有订单“meta_data”属性的订单 API 过滤器

问题描述 投票:0回答:1

我正在使用 Postman 在我出于测试目的在本地设置的环境中获取 WooCommerce 订单。我需要知道是否有一种方法可以通过自定义字段值(元数据字段)过滤订单?我找不到关于此事的任何文档。

我在 Postman 中尝试了下面的操作,但它没有给出我预期的结果。由于

is_vat_exempt
值设置为
no
,它仍然在订单响应中给了我结果:

GET http://localhost/woosite/wp-json/wc/v3/orders?meta_key='is_vat_exempt'&meta_value='yes'
woocommerce woocommerce-rest-api
1个回答
1
投票

目前还不可能。除非您使用可用的过滤器创建自己的函数woocommerce_rest_orders_prepare_object_query

https://woocommerce.github.io/code-reference/files/woocommerce-includes-rest-api-controllers-version2-class-wc-rest-network-orders-v2-controller.html

类似的解决方案位于此处 Woocommerce REST API 排除订单端点中的特定产品订单 以及此处 WooCommerce REST API - 按修改日期过滤订单

add_filter('woocommerce_rest_orders_prepare_object_query', 'eg_change_list_order_result_woorestapiv3', 10, 2);
function eg_change_list_order_result_woorestapiv3 (array $args, \WP_REST_Request $request){
        $mdk = $request->get_param('meta_data_key');
        $mdv = $request->get_param('meta_data_value');
        
        if (  !isset( $mdk ) ) {
            return $args;
        }

        if ( ! empty( $args['meta_query'] ) ) {
            $args['meta_query'] = array();
        }

        if ( isset( $mdk ) && !isset( $mdv ) ) {

            $args['meta_query'][] = array(
                'key'   => $mdk,
            );
            
        }elseif ( isset( $mdk ) && isset( $mdv ) ) {

            $args['meta_query'][] = array(
                'key'   => $mdk,
                'value' => $mdv,
            );
            
        }

        return $args;

    }

将代码放入functions.php

经过测试并工作 https://sampledomain.com/wp-json/wc/v3/orders/?meta_data_key=samplekey&meta_data_value=samplevalue

© www.soinside.com 2019 - 2024. All rights reserved.