根据Woocommerce中的付款方式停止特定的客户电子邮件通知

时间:2018-11-18 14:16:23

标签: php wordpress woocommerce hook-woocommerce email-notifications

在Woocommerce中,我需要停止在下订单时向客户发送的电子邮件通知,除非Payment_method是BACS(直接银行转帐)。

我在活动主题的function.php文件中尝试了以下操作:

add_filter( 'woocommerce_email_recipient_customer_on_hold_order_order', 'customer_order_email_if_bacs', 10, 2 );

function customer_order_email_if_bacs( $recipient, $order ) {

    if( $order->payment_method() !== 'bacs' ) $recipient = '';

    return $recipient;
}

但是它不起作用。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

更新2

woocommerce_email_recipient_{$email_id}过滤器是一个复合钩子,在其中设置的正确的电子邮件ID是customer_on_hold_order,而不是customer_on_hold_order_order,这将不起作用…

从Woocommerce 3开始,使用WC_Order对象,您需要使用get_payment_method()方法。

为避免除“ Bacs”付款方式外的“客户保留”电子邮件通知,请使用:

add_filter( 'woocommerce_email_recipient_customer_on_hold_order', 'customer_on_hold_order_for_bacs', 10, 2 );
function customer_on_hold_order_for_bacs( $recipient, $order ) {

    if( is_a('WC_Order', $order) && $order->get_payment_method() !== 'bacs' ){
        $recipient = '';
    }
    return $recipient;
}

代码进入您的活动子主题(活动主题)的function.php文件中。经过测试,可以正常工作。