WooCommerce REST API v3 - 按修改日期过滤客户

时间:2021-07-28 13:59:41

标签: php wordpress woocommerce woocommerce-rest-api

我们正在编写一个 WordPress 插件,在该插件中我们从 WooCommerce 网站检索产品/订单/客户数据并将其存储在我们的服务器中,并定期增量更新以进行更改。我们已经为产品和订单做到了这一点。

现在,我们希望获取在增量更新的特定日期之后更新其数据的客户。我已经根据 https://stackoverflow.com/a/64029143/698072 尝试过如下所示。虽然它适用于产品和订单,但不适用于客户。

add_filter('woocommerce_rest_customer_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);

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

在woocommerce中,对于产品和订单,最后修改日期存储在post_modified表的posts列中。但对于客户,它存储在 usermeta 表中,键为 last_update。所以你必须像这样在元数据上过滤它,

public function add_modified_after_filter_to_rest_api( $prepared_args, $request )
{
    if ($request->get_param('modified_after')) {
        $prepared_args['meta_query'] = array(
            array(
                'key'     => 'last_update',
                'value'   => (int) strtotime($request->get_param('modified_after')),
                'compare' => '>='
            ),
        );
    }
    
    return $prepared_args;
}

add_filter('woocommerce_rest_customer_query', 'add_modified_after_filter_to_rest_api', 10, 2);

对于产品和订单,您可以像这样检索它,WooCommerce REST API v3 - Filter products by modified date 使用 woocommerce_rest_product_object_query 过滤器。