由于woocommerce订单收到(谢谢)页面可以重新加载,这并不是一个好方法。
你可以在WC_Orderpayment_complete()方法中找到正确的钩子是woocommerce_payment_complete。因此,您的代码应该适用于大多数支付网关:
add_action('woocommerce_payment_complete', 'action_payment_complete', 30, 1 );
function action_payment_complete( $order_id ){
global $wpdb;
// Get an instance of the WC_Order object (if needed)
$order = wc_get_order( $order_id );
// Your database actions code
wpdb->insert (/* CODE DATABASE*/);
}
代码进入活动子主题(或活动主题)的 function.php 文件中。
对于需要“完成”的(CHEQUE HERE)为 'cheque'、'bacs' 和 'cod' 的付款方式由店长代替,您将使用:
add_action( 'woocommerce_order_status_completed', 'action_order_status_completed', 20, 2 );
function action_payment_complete( $order_id, $order ){
// The specific payment methods to be target
$payment_methods = array('bacs','cheque','cod');
// Only for specific payment methods
if( ! in_array( $order->get_payment_method(), $payment_methods ) return;
global $wpdb;
// Your database actions code
wpdb->insert (/* CODE DATABASE*/);
}
因此,当这种特定付款方式的订单状态更改为已完成时,将触发此钩子......
如果您以 Processing 订单状态为目标,您也可以使用 woocommerce_order_status_processing 代替;如果您以 On Hold 为目标,您也可以使用 woocommerce_order_status_on-hold 订单状态
代码进入活动子主题(或活动主题)的 function.php 文件中。
这应该可行。