我正在我的 WooCommerce 商店和第三方工具之间同步订单,并且我正在使用 REST API 重新制作同步程序。我想要获得一批新订单,在将它们插入数据库后,我想设置一个状态或标志,以便下次我请求一批订单时,我不会得到相同的订单。
详细说明了如何获取订单,并且它有效。我不想使用 STATUS 字段,因为商店经理可以更改它。我不想排除订单 ID 列表,因为随着时间的推移它会变得太长。寻找一个字段,我可以使用该字段将返回的订单限制为我尚未看到的订单,并且能够在成功同步后更新该字段。看起来可能吗?
一个已经存在的字段或创建一个字段的方法?
我想知道是否有一个字段将订单标记为之前已同步,以便我可以仅请求尚未同步的新订单。看起来很常见,希望有人做过并提供建议。
更新了
要标记订单,唯一的方法是添加一些自定义元数据。
首先,当客户下订单或通过管理员手动创建订单时,我们添加自定义元数据来标记它(带有“否”值):
add_action( 'woocommerce_new_order', 'add_custom_order_metadata', 20, 2 );
function add_custom_order_metadata( $order_id, $order ) {
$order->add_meta_data('_order_synced', 'no', true);
$order->save();
}
代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。
下面,我使用 PHP 编程语言 访问 WooCommerce REST API。
然后我们使用 GET 请求查询要同步的订单,其中“_order_synced”键的元数据值为“no”:
$data = [
"meta_data": [
{
"key": "_order_synced",
"value": "no"
}
]
];
print_r($woocommerce->get('orders/batch', $data));
最后,我们将使用 POST 请求批量更新同步订单,更改元数据值:
$data = [
'update' => [
"meta_data": [
{
"key": "_order_synced",
"value": "yes"
}
]
]
];
print_r($woocommerce->post('orders/batch', $data));