WooCommerce REST API - 按修改日期过滤订单
WooCommerce REST API - Filter Orders By Date Modified
我正在使用 WooCommerce REST API (http://woocommerce.github.io/woocommerce-rest-api-docs/#introduction) 并且可以成功下载客户、订单等。
我现在正在尝试获取经过过滤的订单列表,其中订单的修改日期在特定日期之后,但到目前为止还无法正常工作。获取订单 GET 请求的响应包括:
"date_modified": "2016-12-21T00:33:38",
我试过以下方法:
wp-json/wc/v1/orders?filter[modified]=2017-02-14
但这只是 returns 所有订单。我想将 = 更改为 >=,以便它在指定日期之后获取所有订单,但一直无法找到如何为此构造请求 URL?[=14= 的示例]
我能够使用以下请求格式使其正常工作:
wc-api/v1/orders?filter[updated_at_min]=2017-02-22&filter[updated_at_max]=2017-02-25
好的,woocommerce API 实际上并没有实现过滤器。它来自与 woocommerce 一起使用的 wordpress api,最新的 wordpress 不再支持过滤器。对于最新的 wordpress,您必须通过添加 wp-api 团队
提供的 wordpress rest api 过滤器来手动添加过滤器功能
这是有效的:
/wp-json/wc/v2/orders?after=2019-01-10T00:00:00Z&before=2019-01-10T23:59:59Z
我已经通过以下步骤解决了问题:
创建文件夹。
创建同名文件,内容如下:
<?php
/**
* Plugin Name: ModifyOrder
*/
function modify_orders_after_query($request) {
$request['date_query'][0]['column'] = 'post_modified';
return $request;
}
add_filter( "woocommerce_rest_orders_prepare_object_query", 'modify_orders_after_query' );
将其放入 wp-content/plugins 文件夹。
在管理面板中,您可以看到您的文件夹名称作为一个插件,
激活它并尝试!
这对我有用。使用 Woo 4 测试。0.x / API v3
add_filter('woocommerce_rest_orders_prepare_object_query', function(array $args, \WP_REST_Request $request) {
$modified_after = $request->get_param('modified_after');
if (!$modified_after) {
return $args;
}
$args['date_query'][0]['column'] = 'post_modified';
$args['date_query'][0]['after'] = $modified_after;
return $args;
}, 10, 2);
/wp-json/wc/v3/orders/?modified_after=2020-05-09T14:00:00
希望对大家有所帮助。
有效
WooCommerce.get("products?after=2020-11-24T09:01:14&before=2020-11-25T04:51:22")
自 WooCommerce 5.8(2021 年 10 月 21 日发布)起,不再需要 。
WooCommerce API 现在支持产品、订单和优惠券端点的 modified_after 和 modified_before 参数。
更多信息:
我正在使用 WooCommerce REST API (http://woocommerce.github.io/woocommerce-rest-api-docs/#introduction) 并且可以成功下载客户、订单等。
我现在正在尝试获取经过过滤的订单列表,其中订单的修改日期在特定日期之后,但到目前为止还无法正常工作。获取订单 GET 请求的响应包括:
"date_modified": "2016-12-21T00:33:38",
我试过以下方法:
wp-json/wc/v1/orders?filter[modified]=2017-02-14
但这只是 returns 所有订单。我想将 = 更改为 >=,以便它在指定日期之后获取所有订单,但一直无法找到如何为此构造请求 URL?[=14= 的示例]
我能够使用以下请求格式使其正常工作:
wc-api/v1/orders?filter[updated_at_min]=2017-02-22&filter[updated_at_max]=2017-02-25
好的,woocommerce API 实际上并没有实现过滤器。它来自与 woocommerce 一起使用的 wordpress api,最新的 wordpress 不再支持过滤器。对于最新的 wordpress,您必须通过添加 wp-api 团队
提供的 wordpress rest api 过滤器来手动添加过滤器功能这是有效的:
/wp-json/wc/v2/orders?after=2019-01-10T00:00:00Z&before=2019-01-10T23:59:59Z
我已经通过以下步骤解决了问题:
创建文件夹。
创建同名文件,内容如下:
<?php /** * Plugin Name: ModifyOrder */ function modify_orders_after_query($request) { $request['date_query'][0]['column'] = 'post_modified'; return $request; } add_filter( "woocommerce_rest_orders_prepare_object_query", 'modify_orders_after_query' );
将其放入 wp-content/plugins 文件夹。
在管理面板中,您可以看到您的文件夹名称作为一个插件, 激活它并尝试!
这对我有用。使用 Woo 4 测试。0.x / API v3
add_filter('woocommerce_rest_orders_prepare_object_query', function(array $args, \WP_REST_Request $request) {
$modified_after = $request->get_param('modified_after');
if (!$modified_after) {
return $args;
}
$args['date_query'][0]['column'] = 'post_modified';
$args['date_query'][0]['after'] = $modified_after;
return $args;
}, 10, 2);
/wp-json/wc/v3/orders/?modified_after=2020-05-09T14:00:00
希望对大家有所帮助。
有效
WooCommerce.get("products?after=2020-11-24T09:01:14&before=2020-11-25T04:51:22")
自 WooCommerce 5.8(2021 年 10 月 21 日发布)起,不再需要
WooCommerce API 现在支持产品、订单和优惠券端点的 modified_after 和 modified_before 参数。
更多信息: