阻止通过API更新WooCommerce订单状态



我允许特定的服务提供商(运输整合商(使用REST API访问WooCommerce网站。这样我就可以将订单导入他们的系统。

不幸的是,他们的系统将WooCommerce网站上的订单状态更改为";已完成";一旦购买了运输标签。这会触发客户提前收到订单完成电子邮件等。

我想知道是否有办法防止订单状态通过API更改?

正在使用的端点是/wp-json/wc/v3/orders/<id>

有没有一种方法可以测试PUT请求的源(例如通过IP地址(,然后阻止状态更新,或者有一种更通用的方法可以简单地通过REST API阻止状态更新?

add_filter('woocommerce_rest_pre_insert_shop_order_object', 'restrict_order_status', 10, 3);
function restrict_order_status($order, $request, $creating) {
// $creating -- True If is creating a new object. False is update request
if(!$creating){
$existing_status = $order->get_status();
$order->set_status($existing_status);
}
return $order;
}

钩子woocommerce_rest_pre_insert_{$this->post_type}_object可用于在通过WC-Rest API插入/更新帖子类型之前进行更改。$this->post_type可以是"product"、"shop_order"、"shop_coon"。。。等

在活动主题函数.php文件中添加上述代码片段,订单状态将在使用API 进行订单更新时保持不变

最新更新