WooCommerce REST API - 按修改日期过滤订单

Posted

技术标签:

【中文标题】WooCommerce REST API - 按修改日期过滤订单【英文标题】:WooCommerce REST API - Filter Orders By Date Modified 【发布时间】:2017-07-20 18:26:15 【问题描述】:

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

但这只会返回所有订单。我想将 = 更改为 >=,以便它在指定日期之后获取所有订单,但无法找到如何构造请求 URL 的示例?

【问题讨论】:

我也面临同样的问题 【参考方案1】:

这对我有用。使用 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_rest_product_object_query,这个精确的解决方案也适用于产品。非常感谢:) 为我工作,但只返回 10 个结果...使用&per_page=20 您可以增加到 20...请注意,最大值仅为 100 个结果! :( @Meloman。试试这个,看看它是否适合你。这是针对订单的产品更新。 ***.com/questions/48476534/…【参考方案2】:

我已经通过以下步骤解决了这个问题:

    创建一个文件夹。

    创建一个同名文件,内容如下:

    <?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 文件夹中。

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

【讨论】:

【参考方案3】:

这是有效的:

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

【讨论】:

这是“date_created”,而不是“date_modified”日期:-(【参考方案4】:

从 WooCommerce 5.8(2021 年 10 月 21 日发布)开始,不再需要 Muhwezi Jerald Basasa's solution。

WooCommerce API 现在支持产品、订单和优惠券端点的 modified_after 和 modified_before 参数。

更多信息:

https://developer.woocommerce.com/2021/10/12/woocommerce-5-8-released/ https://github.com/woocommerce/woocommerce/blob/release/5.8/changelog.txt

【讨论】:

【参考方案5】:

我能够使用以下请求格式来完成这项工作:

wc-api/v1/orders?filter[updated_at_min]=2017-02-22&filter[updated_at_max]=2017-02-25

【讨论】:

在我使用 v2 REST API 进行测试时,这对我有用。你也可以试试这样的:/wp-json/wc/v2/orders?after=2017-05-17T00:00:00Z&before=2017-05-17T23:59:59Z 是的,上述方法用于订单,但这不适用于客户。另外我认为这不是 Woocommerce 功能,而是 Wordpress 功能。【参考方案6】:

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

【讨论】:

【参考方案7】:

它正在工作

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

【讨论】:

以上是关于WooCommerce REST API - 按修改日期过滤订单的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce REST API - 按修改日期过滤订单

woocommerce通过rest api验证用户名和密码

php facetwp woocommerce rest api check

登录时 WooCommerce REST API 身份验证失败

Woocommerce rest api为客户获取所有产品

Woocommerce Paypal REST api 与 React JS 的集成