php - 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 -使用过滤器按修改日期过滤产品woocommerce_rest_product_object_query
。
推荐阅读
- angular - ngb-modal 未正确打开
- laravel - Laravel 通过 Eloquent 获取 SoftDelete 数据
- java - Log4j2 - 带有多个记录器的 xml 到属性配置
- liquibase - liquibase eclipse 插件不再可用
- java - 比较 hashCode 实现
- c# - 一个单词在字符串中出现多少次 C# (Visual Studio)
- c# - unity 为什么这个触发器不能正常工作
- google-analytics - 选择国家/地区细分时的 Google Analytics(分析)错误
- azure - Azure 存储导出作业失败并出现错误代码 ResourceNotFound
- sql-update - case when 语句,语法错误