WooCommerce 成功订单挂钩
WooCommerce successful order hook
我正在尝试发送一封关于成功订单的电子邮件,所以我一直在使用 woocommerce_thankyou
挂钩,它似乎工作得很好。但我发现即使客户尝试向外部支付网关(信用卡支付)付款,它也会被触发,即使银行不接受付款。
我可以使用哪个钩子来涵盖所有这些情况?
银行转账、货到付款、信用卡(仅在付款成功时)?
对于所有支付网关的成功支付订单除了银行电汇、支票或货到付款,您可以使用专用的woocommerce_payment_complete
hook located in WC_Order
payment_complete()
method而不是更通用的挂钩woocommerce_thankyou
,比如:
add_action( 'woocommerce_payment_complete', 'action_payment_complete', 10, 2 );
function action_payment_complete( $order_id, $order ) {
// Here add your code
}
请注意,您可以使用已定义的 $order_id
和 $order
函数参数。而且这个钩子只触发一次,避免重复。
对于银行电汇(bacs)、支票(cheque)或货到付款(cod)支付方式,店长通过更改订单状态手动确认订单已支付, 你可以使用专用钩子 woocommerce_order_status_changed
如下。
add_action( 'woocommerce_order_status_changed', 'bacs_cheque_cod_payment_complete', 10, 4 );
function bacs_cheque_cod_payment_complete( $order_id, $old_status, $new_status, $order ) {
// 1. For Bank wire and cheque payments
if( in_array( $order->get_payment_method(), array('bacs', 'cheque')
&& in_array( $new_status, array('processing', 'completed')
&& ! $order->get_date_paid('edit') ) {
// Do something
}
// 2. For Cash on delivery payments
if( 'cod' === $order->get_payment_method() && 'completed' === $new_status ) {
// Do something
}
}
请注意,您可以使用已定义的 $order_id
和 $order
函数参数。此外,此挂钩将在订单状态更改时触发一次,避免重复。
相关: After a successful payment, What hook is triggered in Woocommerce
我正在尝试发送一封关于成功订单的电子邮件,所以我一直在使用 woocommerce_thankyou
挂钩,它似乎工作得很好。但我发现即使客户尝试向外部支付网关(信用卡支付)付款,它也会被触发,即使银行不接受付款。
我可以使用哪个钩子来涵盖所有这些情况?
银行转账、货到付款、信用卡(仅在付款成功时)?
对于所有支付网关的成功支付订单除了银行电汇、支票或货到付款,您可以使用专用的woocommerce_payment_complete
hook located in WC_Order
payment_complete()
method而不是更通用的挂钩woocommerce_thankyou
,比如:
add_action( 'woocommerce_payment_complete', 'action_payment_complete', 10, 2 );
function action_payment_complete( $order_id, $order ) {
// Here add your code
}
请注意,您可以使用已定义的 $order_id
和 $order
函数参数。而且这个钩子只触发一次,避免重复。
对于银行电汇(bacs)、支票(cheque)或货到付款(cod)支付方式,店长通过更改订单状态手动确认订单已支付, 你可以使用专用钩子 woocommerce_order_status_changed
如下。
add_action( 'woocommerce_order_status_changed', 'bacs_cheque_cod_payment_complete', 10, 4 );
function bacs_cheque_cod_payment_complete( $order_id, $old_status, $new_status, $order ) {
// 1. For Bank wire and cheque payments
if( in_array( $order->get_payment_method(), array('bacs', 'cheque')
&& in_array( $new_status, array('processing', 'completed')
&& ! $order->get_date_paid('edit') ) {
// Do something
}
// 2. For Cash on delivery payments
if( 'cod' === $order->get_payment_method() && 'completed' === $new_status ) {
// Do something
}
}
请注意,您可以使用已定义的 $order_id
和 $order
函数参数。此外,此挂钩将在订单状态更改时触发一次,避免重复。
相关: After a successful payment, What hook is triggered in Woocommerce