使用自定义元数据使用 REST API 标记 WooCommerce 订单,这样我就不会再次同步它们

问题描述 投票:0回答:1

我正在我的 WooCommerce 商店和第三方工具之间同步订单,并且我正在使用 REST API 重新制作同步程序。我想要获得一批新订单,在将它们插入数据库后,我想设置一个状态或标志,以便下次我请求一批订单时,我不会得到相同的订单。

REST API 文档

详细说明了如何获取订单,并且它有效。我不想使用 STATUS 字段,因为商店经理可以更改它。我不想排除订单 ID 列表,因为随着时间的推移它会变得太长。寻找一个字段,我可以使用该字段将返回的订单限制为我尚未看到的订单,并且能够在成功同步后更新该字段。看起来可能吗?

一个已经存在的字段或创建一个字段的方法?

我想知道是否有一个字段将订单标记为之前已同步,以便我可以仅请求尚未同步的新订单。看起来很常见,希望有人做过并提供建议。

woocommerce metadata hook-woocommerce orders woocommerce-rest-api
1个回答
1
投票

更新了

要标记订单,唯一的方法是添加一些自定义元数据。

首先,当客户下订单或通过管理员手动创建订单时,我们添加自定义元数据来标记它(带有“否”值)

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));
© www.soinside.com 2019 - 2024. All rights reserved.