2018年的方式:
基于Guido W.P.答案构建,您可以在更轻巧有效的版本代码中woocommerce_checkout_create_order操作钩子(使用WC 3 + CRUD方法)::
add_action('woocommerce_checkout_create_order', 'before_checkout_create_order', 20, 2);
function before_checkout_create_order( $order, $data ) {
$order->update_meta_data( '_custom_meta_key', 'value' );
}
代码进入函数.php活动子主题(或活动主题)的文件。
在WooCommerce 3 +中进行测试和工作(仅限)。
一些解释:
woocommerce_checkout_create_order操作挂钩只是保存订单数据之前的一个步骤。请参阅下面的方法摘录(带有两个钩子):WC_Checkoutcreate_order()
/**
* Action hook to adjust order before save.
* @since 3.0.0
*/
do_action( 'woocommerce_checkout_create_order', $order, $data );
// Save the order.
$order_id = $order->save();
do_action( 'woocommerce_checkout_update_order_meta', $order_id, $data );
return $order_id;
为什么使用woocommerce_checkout_create_order?
- 因为你不需要使用,因为你已经得到了
$order作为钩子函数中的参数。$order = wc_get_order( $order_id );
- 您不需要使用,因为无论如何,这将在之后完成(请参阅源代码)
$order->save();
- 这个钩子自WooCommerce版本3以来已经发布,它是为相同的目的而制作的,允许使用所有可用的方法。
WC_Order
因此,这只适用于函数中的一行代码。