您可以使用在woocommerce_checkout_order_processed 操作挂钩中挂钩的自定义函数。
由于woocommerce 3.0+版本,这里是对应的核心代码位于process_checkout()函数中。
// Since WooCommerce version 3.0+
do_action( 'woocommerce_checkout_order_processed', $order_id, $posted_data, $order );
WooCommerce 3.0 及以下版本:
// Since WooCommerce version 2.1+ (before version 3.0+)
do_action( 'woocommerce_checkout_order_processed', $order_id, $this->posted );
因此,根据您使用的 woocommerce 版本,有两种情况:
从 WooCommerce 3.0+ 开始,您可以在挂钩函数中使用 2 个额外的参数并且您不需要在获得 时创建订单对象的实例 $order 已作为参数。
您还可以通过 $posted_data 参数直接访问发布的数据。
add_action('woocommerce_checkout_order_processed', 'action_checkout_order_processed', 10, 3);
function action_checkout_order_processed( $order_id, $posted_data, $order ) {
// Do something
}
由于 WooCommerce 2.1+ (在 WooCommerce 3.0 之前),您只有 $order_id 作为参数,因此您可能需要使用 wc_get_order() 函数获取 $order 对象的实例:
add_action('woocommerce_checkout_order_processed', 'action_checkout_order_processed', 10, 1);
function action_checkout_order_processed( $order_id ) {
// get an instance of the order object
$order = wc_get_order( $order_id );
// Do something
}
代码位于您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。