WooCommerce REST API - Filter Orders By Date Modified
I'm using the WooCommerce REST API (http://woocommerce.github.io/woocommerce-rest-api-docs/#introduction) and can download Customers, Orders, etc successfully.
I'm now trying to get a filtered list of Orders where the Date Modified for the Order is after a certain date, but haven't been able to get this to work so far. The response to get GET request for an Order includes:
"date_modified": "2016-12-21T00:33:38",
I've tried the following:
wp-json/wc/v1/orders?filter[modified]=2017-02-14
but that just returns all orders. I would like to change the = to be a >= so it gets all Orders after the specified date, but haven't been able to find an example of how to structure the request URL for this?
This worked for me. Tested with 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
Hope it helps someone.
As of WooCommerce 5.8 (released October 21, 2021), Muhwezi Jerald Basasa's solution is no longer necessary.
The WooCommerce API now supports the modified_after and modified_before parameters for the product, order and coupon endpoints.
More information:
- https://developer.woocommerce.com/2021/10/12/woocommerce-5-8-released/
- https://github.com/woocommerce/woocommerce/blob/release/5.8/changelog.txt
This is working:
/wp-json/wc/v2/orders?after=2019-01-10T00:00:00Z&before=2019-01-10T23:59:59Z
I've solved the problem with the following steps:
Create a folder.
Create a file with the same name and the following content:
<?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' );Drop it in the wp-content/plugins folder.
In the admin panel, you can see your folder name as a plugin, activate it and try!
It's Working
WooCommerce.get("products?after=2020-11-24T09:01:14&before=2020-11-25T04:51:22")
I was able to get this working using the following request format:
wc-api/v1/orders?filter[updated_at_min]=2017-02-22&filter[updated_at_max]=2017-02-25
Ok, the woocommerce API doesnt actually implement the filter. Its from wordpress api which is used with woocommerce and latest wordpress doesnt support filter anymore. For latest wordpress you must add the filter functionality manually by adding wordpress rest api filter provided by the wp-api team
ReferenceURL : https://stackoverflow.com/questions/42531523/woocommerce-rest-api-filter-orders-by-date-modified
'programing' 카테고리의 다른 글
| Why is --isolatedModules error fixed by any import? (0) | 2023.03.11 |
|---|---|
| How to join multiple collections with $lookup in mongodb (0) | 2023.03.11 |
| wordpress apache permalinks not working (404 error) (0) | 2023.03.11 |
| angularjs 리소스로 페이지 매김과 카운트를 처리하는 방법 (0) | 2023.03.11 |
| REST API에 의해 JSON이 반환되는 경우 MIME 유형은 무엇입니까? (0) | 2023.03.11 |