订单更新后的 WooCommerce 挂钩?
WooCommerce hook after order is updated?
当我通过管理员更改某人的订单(例如他们的地址或自定义元字段)时,我可以使用挂钩吗?我 但不幸的是 woocommerce_process_shop_order_meta
在订单保存之前被解雇了,这意味着我无法访问新更新的数据。我需要的是能够使用保存到订单的新数据。
UPDATE: 使用 save_post_shop_order
的一个问题是元在命中之前已更新,因此我无法比较之前保存的元值,因为示例:
$metaArray = $_POST['meta'];
foreach($metaArray as $meta => $key) {
$metaArr[$key["key"]] = $key["value"];
}
$meta = get_post_meta($order->ID);
if($meta['coverstart'][0] != $metaArr['coverstart']) {
die("COVER START DATE HAS CHANGED");
}
永远不会命中 die()
,因为脚本总是获取新保存的值。
抱歉,但是 woocommerce_checkout_update_order_meta
被解雇了 订单保存后 ...请参阅位于 WC_Checkout
create_order()
method:
中的此提取源代码
// Save the order.
$order_id = $order->save(); // <== Order is saved here before
do_action( 'woocommerce_checkout_update_order_meta', $order_id, $data ); <== // The hook
return $order_id;
所以在woocommerce_checkout_update_order_meta
你可以得到保存的订单数据:
- 通过从
$order_id
参数中检索 WC_Order
对象并对其使用所有方法。
- 或将
get_post_meta()
与 $order_id
参数一起使用以获取保存在 wp_postmeta
数据库 table. 中的数据
然后你可以用update_post_meta()
函数更新数据…
You can even use woocommerce_checkout_create_order
before the data is saved…
您将能够使用 WC_Order
class 的所有可用方法(CRUD getter 方法)从 $order
参数获取数据。
您将能够使用 CRUD setter 方法更改此数据并保存它…
如果您需要在订单处理后执行此操作,则可以使用以下挂钩:
woocommerce_new_order
(在新创建的订单事件上)
woocommerce_thankyou
(在收到订单页面上)
woocommerce_order_status_changed
(订单状态更改事件)
可能还有其他人……
要在后端保存订单时更改数据,您将使用具有 3 个参数的 save_post_shop_order
:$post_id
、$post
$update
…
当我通过管理员更改某人的订单(例如他们的地址或自定义元字段)时,我可以使用挂钩吗?我 woocommerce_process_shop_order_meta
在订单保存之前被解雇了,这意味着我无法访问新更新的数据。我需要的是能够使用保存到订单的新数据。
UPDATE: 使用 save_post_shop_order
的一个问题是元在命中之前已更新,因此我无法比较之前保存的元值,因为示例:
$metaArray = $_POST['meta'];
foreach($metaArray as $meta => $key) {
$metaArr[$key["key"]] = $key["value"];
}
$meta = get_post_meta($order->ID);
if($meta['coverstart'][0] != $metaArr['coverstart']) {
die("COVER START DATE HAS CHANGED");
}
永远不会命中 die()
,因为脚本总是获取新保存的值。
抱歉,但是 woocommerce_checkout_update_order_meta
被解雇了 订单保存后 ...请参阅位于 WC_Checkout
create_order()
method:
// Save the order.
$order_id = $order->save(); // <== Order is saved here before
do_action( 'woocommerce_checkout_update_order_meta', $order_id, $data ); <== // The hook
return $order_id;
所以在woocommerce_checkout_update_order_meta
你可以得到保存的订单数据:
- 通过从
$order_id
参数中检索WC_Order
对象并对其使用所有方法。 - 或将
get_post_meta()
与$order_id
参数一起使用以获取保存在wp_postmeta
数据库 table. 中的数据
然后你可以用update_post_meta()
函数更新数据…
You can even use
woocommerce_checkout_create_order
before the data is saved…
您将能够使用 WC_Order
class 的所有可用方法(CRUD getter 方法)从 $order
参数获取数据。
您将能够使用 CRUD setter 方法更改此数据并保存它…
如果您需要在订单处理后执行此操作,则可以使用以下挂钩:
woocommerce_new_order
(在新创建的订单事件上)woocommerce_thankyou
(在收到订单页面上)woocommerce_order_status_changed
(订单状态更改事件)
可能还有其他人……
要在后端保存订单时更改数据,您将使用具有 3 个参数的 save_post_shop_order
:$post_id
、$post
$update
…