用于订单更新的 Woocommerce 钩子

Woocommerce hook for order update

大家早上好。 正如标题所说,我正在尝试在更新订单时触发一个功能。 更具体地说,我想 运行 在更改订单页面(管理端)中的自定义字段然后保存时使用此功能。

我不是想知道订单何时完成或状态何时更新,而是想知道此字段何时更新。

目前我正在使用 woocommerce_process_shop_order_meta 挂钩,但它似乎不起作用。

有什么建议吗?
谢谢!

-- 编辑--

woocommerce_process_shop_order_meta 是正确的钩子,我在这个钩子触发的函数中遇到了错误,所以如果你需要 运行 在管理员中单击更新顺序后的函数页面这是正确的方法。

如编辑中所写,如果您想在订单更新时触发功能或响应,woocommerce_process_shop_order_meta 是正确的挂钩。

我最终使用了 save_post_shop_order 钩子。它在以下事件中被调用:

  • 订单创建(客户结帐流程和管理)
  • 单个订单更新
  • 批量状态更新
  • 破坏订单
  • 取消订单

为了只观看订单更新,您必须像这样过滤掉非订单类型 posts 和 post 创作:

add_action (
    'save_post_shop_order',
    function (int $postId, \WP_Post $post, bool $update): void
    {
        // Ignore order (post) creation
        if ($update !== true) {
            return;
        }

        // Here comes your code...
    },
    10,
    3
);

woocommerce_after_order_object_save 似乎首先是一个不错的选择,但根据我的经验,它 运行 3 次 在单个订单更新中(在简单的工厂安装中没有插件)。前2次运行时,订单数据还不是最新的(状态是更新前的状态),所以我觉得这个hook没用。