Я использую C # для получения списка заказов из установки WooCommerce 2.6 через новый REST 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
добавляются к URL-адресу API, поэтому в итоге я получаю что-то вроде этого:
https://example.com/wp-json/wc/v1/orders?status=pending,processing,on-hold&expand=coupons,products,taxes&<other parameters for OAUTH>
API 2.5 использовался для возврата списка заказов, которые имели одно из состояний в status
. Теперь я получаю сообщение об ошибке, что status
не является одним из значений any
, ...
Можно ли в одном вызове получить список ожидающих, обрабатываемых или отложенных заказов или мне нужно выполнить три отдельных вызова API?
РЕДАКТИРОВАТЬ: фактическая ошибка 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 исходный код обнаружил следующий фрагмент кода:
/**
* 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']
в _10 _...?
Думаю, я просто выполню три отдельных вызова вместо того, чтобы ждать решения ...
status is not one of any, pending, processing, on-hold, completed, cancelled, refunded, failed
. - person Thorsten Dittmar   schedule 10.08.2016