WooCommerce REST API - 按修改日期过滤

时间:2017-03-01 12:18:34

标签: wordpress rest woocommerce woocommerce-rest-api wordpress-rest-api

我使用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

但这只是返回所有订单。我想将=更改为> =以便在指定日期之后获取所有订单,但是还没有找到如何为此构建请求网址的示例?

6 个答案:

答案 0 :(得分:2)

这对我有用。经过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

希望它对某人有帮助。

答案 1 :(得分:0)

好的,woocommerce API实际上并没有实现过滤器。它来自wordpress api,用于woocommerce和最新的wordpress不再支持过滤器。对于最新的wordpress,您必须通过添加wp-api团队提供的wordpress rest api过滤器手动添加过滤器功能

答案 2 :(得分:0)

这有效:

/wp-json/wc/v2/orders?after=2019-01-10T00:00:00Z&before=2019-01-10T23:59:59Z

答案 3 :(得分:0)

我已通过以下步骤解决了该问题:

  1. 创建文件夹。
  2. 创建具有相同名称和以下内容的文件:

    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' );
    
  3. 将其拖放到wp-content / plugins文件夹中。

  4. 在管理面板中,您可以看到文件夹名称作为插件, 激活并尝试!

答案 4 :(得分:-1)

我能够使用以下请求格式来实现此功能:

WC-API / V1 /订单过滤[updated_at_min] = 2017年2月22日&安培;过滤[updated_at_max] = 2017年2月25日

答案 5 :(得分:-1)

工作正常

WooCommerce.get("products?after=2020-11-24T09:01:14&before=2020-11-25T04:51:22")