C# を使用して、新しい REST API を介して WooCommerce 2.6 インストールから注文のリストを取得しています。
私がする必要があるのは、3 つの可能な状態のいずれかを持つ注文をフェッチすることですが、API では、呼び出しごとに 1 つのステータスしかフィルタリングできないようです。これは、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 は、 の状態の 1 つを持つ注文のリストを返すために使用されていましたstatus
。今、それstatus
は値の1つではないというエラーが表示されますany
...
保留中、処理中、または保留中の注文のリストを1 回の呼び出しで取得することは可能ですか、それとも API に対して 3 回別々に呼び出す必要がありますか?
編集:実際のエラー 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']
になりwc-pending,processing,on-hold
ますか?
解決策を待つ代わりに、3 つの別々の呼び出しを実行するだけだと思います...