获取多个州的订单
Get orders by multiple states
我正在使用 C# 通过新的 REST 从 WooCommerce 2.6 安装中检索订单列表 API。
我需要做的是获取具有三种可能状态之一的订单,但 API 似乎只允许我在每次调用时过滤一种状态。这是用于 WooCommerce 2.5x REST API:
的代码的一部分
// Create a list of parameters for filtering the result set
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters["status"] = "pending,processing,on-hold";
parameters["expand"] = "coupons,products,taxes";
// Use RestSharp to call the API
var client = new RestClient(wooHelper.ApiUrl);
...
var request = new RestRequest(url, Method.GET);
var response = client.Execute(request);
parameters
字典中的值附加到 API URL,所以最后我得到这样的东西:
https://example.com/wp-json/wc/v1/orders?status=pending,processing,on-hold&expand=coupons,products,taxes&<other parameters for OAUTH>
2.5 API 用于 return 具有 status
中状态之一的订单列表。现在我收到一条错误消息,指出 status
不是值 any
之一,...
是否仍然可以在 一次调用 中检索挂起、处理或暂停订单的列表,或者我是否需要对 [=43= 执行三个单独的调用]?
编辑:实际错误 JSON 是
{
"code" : "rest_invalid_param",
"message" : "Ung\u00fcltige(r) Parameter: status",
"data" : {
"status" : 400,
"params" : {
"status" : "status ist kein any, pending, processing, on-hold, completed, cancelled, refunded, failed"
}
}
}
编辑 2:挖掘 WooCommerce source code 发现以下代码片段:
/**
* Query args.
*
* @param array $args
* @param WP_REST_Request $request
* @return array
*/
public function query_args( $args, $request ) {
global $wpdb;
// Set post_status.
if ( 'any' !== $request['status'] ) {
$args['post_status'] = 'wc-' . $request['status'];
} else {
$args['post_status'] = 'any';
}
所以当传入多个状态时,这会将 $args['post_status']
变成 wc-pending,processing,on-hold
...?
我想我将只执行三个单独的调用而不是等待解决方案...
我在 GitHub 上提交了这个进行调查,结果发现新的 REST API 不再支持按多个状态值进行过滤。 (https://github.com/woothemes/woocommerce/issues/11676).
我正在使用 C# 通过新的 REST 从 WooCommerce 2.6 安装中检索订单列表 API。
我需要做的是获取具有三种可能状态之一的订单,但 API 似乎只允许我在每次调用时过滤一种状态。这是用于 WooCommerce 2.5x REST API:
的代码的一部分// Create a list of parameters for filtering the result set
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters["status"] = "pending,processing,on-hold";
parameters["expand"] = "coupons,products,taxes";
// Use RestSharp to call the API
var client = new RestClient(wooHelper.ApiUrl);
...
var request = new RestRequest(url, Method.GET);
var response = client.Execute(request);
parameters
字典中的值附加到 API URL,所以最后我得到这样的东西:
https://example.com/wp-json/wc/v1/orders?status=pending,processing,on-hold&expand=coupons,products,taxes&<other parameters for OAUTH>
2.5 API 用于 return 具有 status
中状态之一的订单列表。现在我收到一条错误消息,指出 status
不是值 any
之一,...
是否仍然可以在 一次调用 中检索挂起、处理或暂停订单的列表,或者我是否需要对 [=43= 执行三个单独的调用]?
编辑:实际错误 JSON 是
{
"code" : "rest_invalid_param",
"message" : "Ung\u00fcltige(r) Parameter: status",
"data" : {
"status" : 400,
"params" : {
"status" : "status ist kein any, pending, processing, on-hold, completed, cancelled, refunded, failed"
}
}
}
编辑 2:挖掘 WooCommerce source code 发现以下代码片段:
/**
* Query args.
*
* @param array $args
* @param WP_REST_Request $request
* @return array
*/
public function query_args( $args, $request ) {
global $wpdb;
// Set post_status.
if ( 'any' !== $request['status'] ) {
$args['post_status'] = 'wc-' . $request['status'];
} else {
$args['post_status'] = 'any';
}
所以当传入多个状态时,这会将 $args['post_status']
变成 wc-pending,processing,on-hold
...?
我想我将只执行三个单独的调用而不是等待解决方案...
我在 GitHub 上提交了这个进行调查,结果发现新的 REST API 不再支持按多个状态值进行过滤。 (https://github.com/woothemes/woocommerce/issues/11676).