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

pw136qt2  于 2023-03-07  发布在  WordPress
关注(0)|答案(7)|浏览(191)

我正在使用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的示例?

inn6fuwd

inn6fuwd1#

这对我很有效。用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/订单/?修改后=2020年5月9日14:00:00
希望能帮上忙。

neekobn8

neekobn82#

截至WooCommerce 5.8(2021年10月21日发布),不再需要Muhwezi Jerald Basasa's solution
WooCommerce API现在支持productsorderscoupons端点的modified_after和modified_before参数。
更多信息:

z3yyvxxp

z3yyvxxp3#

这是可行的:

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

wydwbb8l4#

我已通过以下步骤解决了该问题:
1.创建一个文件夹。
1.创建具有相同名称和以下内容的文件:

<?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' );

1.把它放到wp-content/plugins文件夹中。
1.在管理面板中,你可以看到你的文件夹名称作为一个插件,激活它,并尝试!

0dxa2lsx

0dxa2lsx5#

它在工作

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

bt1cpqcv6#

我可以使用以下请求格式来实现这个功能:
wc-api/v1/订单?过滤器[最小更新时间]=2017年2月22日&过滤器[最大更新时间]=2017年2月25日

oiopk7p5

oiopk7p57#

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

相关问题