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

如何解决WooCommerce REST API v3 - 按修改日期过滤客户

我们正在编写一个 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);

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

解决方法

在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 过滤器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?