我正在使用 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_rest_orders_prepare_object_query
类似的解决方案位于此处 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