WooCommerce 成功订单挂钩

问题描述 投票:0回答:1

我正在尝试发送关于成功订单的电子邮件,所以到目前为止我一直在使用

woocommerce_thankyou
钩子,它似乎工作得很好。但我发现,即使客户尝试向外部支付网关(信用卡支付)付款,即使银行不接受付款,也会触发该事件。

我可以使用哪个钩子来涵盖所有这些情况?

银行转账、货到付款、信用卡购物车(仅限成功付款)?

php wordpress woocommerce hook-woocommerce orders
1个回答
2
投票

在所有支付网关成功支付订单时除了银行电汇、支票或货到付款之外,您可以使用位于woocommerce_payment_complete

WC_Order
方法
中的专用
payment_complete()
挂钩而不是更通用的挂钩
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') ) {
        // Do something
    } 

    // 2. For Cash on delivery payments
    if( 'cod' === $order->get_payment_method() && 'completed' === $new_status ) {
        // Do something
    } 
}

请注意,您可以使用定义的

$order_id
$order
函数参数。此外,当订单状态发生变化时,该钩子将被触发一次,避免重复。


相关: 支付成功后,Woocommerce会触发什么hook

© www.soinside.com 2019 - 2024. All rights reserved.