Остановить уведомление по электронной почте для конкретного клиента на основе методов оплаты в Woocommerce - PullRequest
0 голосов
/ 18 ноября 2018

В 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 голосов
/ 18 ноября 2018

Обновление 2

Фильтр woocommerce_email_recipient_{$email_id} представляет собой составной хук, и правильный идентификатор электронной почты для установки в нем - customer_on_hold_order, а не customer_on_hold_order_order, который не будет работать ...

С объектом WC_Order, начиная с Woocommerce 3, вам необходимо использовать метод 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 вашей активной дочерней темы (активной темы).Проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...