#woocommerce #woocommerce-rest-api
#woocommerce #woocommerce-rest-api
Вопрос:
Я ищу способ получить список заказов, которые обновляются после определенной указанной даты. Я использую Woocommerce REST API для доступа к этим заказам. В документах API я нахожу, что в вызове GET есть параметр ‘after’, но он фильтрует только заказы, опубликованные после определенной даты, а не обновленные.
Большое спасибо!
Ответ №1:
Обновленный ответ:
Добавьте следующий код в пользовательский плагин.
function modify_orders_after_query($request) {
$request['date_query'][0]['column'] = 'post_modified';
return $request;
}
add_filter( "woocommerce_rest_shop_order_query", 'modify_orders_after_query' );
Затем вы можете сделать запрос GET на свой URL-адрес API, что-то вроде этого:
http://example.com/wp-json/wc/v1/orders?after=2016-10-10T10:10:10Z
Обратите внимание: Пожалуйста, протестируйте перед использованием этого метода.
Наследие:
Это может быть достигнуто с updated_at_min
помощью .
Пожалуйста, проверьте wp-contentpluginswoocommerceincludesapiclass-wc-api-resource.php
: Line 157
и wp-contentpluginswoocommerceincludesapiclass-wc-api-orders.php
: Line 723
Комментарии:
1. Спасибо за ответ. Я нахожу эти файлы только на картах legacy / v1-2-3, а не в файлах, использующих REST API. Есть какие-либо подсказки, как этого добиться, используя этот новейший REST API?
2. @Axel Извините, я использовал v3 и дал ответ на это. Обновленный ответ. Пожалуйста, проверьте.
3. спасибо за обновление. Должен ли я включить этот код в class-wc-rest-orders-controller.php досье? И как будет выглядеть вызов API?
4. @Axel Нет. Если вы отредактируете файл woocommerce, он будет заменен при следующем обновлении wc. Поэтому создайте новый плагин, как в этой ссылке . активируйте его. Затем используйте запрос. Я обновил ответ на вопрос «Как выглядит вызов API».
5. @Manumie в версии 2 используется не woocommerce_rest_shop_order_query, а woocommerce_rest_orders_prepare_object_query
Ответ №2:
Мне удалось решить проблему, используя советы выше. Добавлена папка с файлом в папке плагина с тем же именем и следующим содержимым:
<?php
/**
* Plugin Name: wooCommerceFilter
* Description: Change the ORDER API endpoint to consider date_modified.
* Version: 1.0
*/
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' );
?>