Я пытаюсь удалить обрабатываемое (или полное) электронное письмо в зависимости от метаданных.

Я использую POS-систему и побуждаю клиентов платить по электронной почте со счетом-фактурой - первоначальный статус заказа ожидает оплаты. Я хочу а) проверить, был ли заказ сделан с использованием позиции, б) удалить либо «обрабатывающее», либо «полное» электронное письмо.

Кажется, я не могу заставить работать логику оператора if. Я почти уверен, что мета-ключ - «_pos», а значение - «1» или «0».

Вот мой myphp screem-снимок wp_postmeta

add_action( 'woocommerce_email', 'removing_POS_emails' );
function removing_POS_emails( $email_class, $order_id ) {

     //Remove the Processing email for POS emails
     $pos_test = get_post_meta( $order_id, '_pos', true );
     if ( $pos_test == "1" ) {
         remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );
     }
}

Я что-то пропустил? Можно ли использовать мета post в хуке woocommerce_email?

Если я получу правильное выражение if, я уверен, что смогу удалить обрабатывающее / полное электронное письмо или даже изменить класс электронной почты и создать настраиваемое электронное письмо для обработки.

2
Jeffrey Fong 16 Фев 2018 в 15:43

1 ответ

Лучший ответ

Обновление (ошибка в другом хуке, связанном с аргументом $ order) :

Вот как это сделать:

add_filter( 'woocommerce_email_recipient_customer_processing_order', 'conditional_email_notification', 10, 2 );
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'conditional_email_notification', 10, 2 );
function conditional_email_notification( $recipient, $order ) {
    if( is_admin() ) return $recipient;

    if ( get_post_meta( $order->get_id(), '_pos', true ) ){
        return '';
    }
    return $recipient;
}

Этот код находится в файле function.php вашей активной дочерней темы (или темы). протестирован и работает.


Аналогичный ответ: Избегайте электронной почты клиента уведомление для определенной категории продуктов в Woocommerce

2
LoicTheAztec 9 Май 2018 в 08:08
Превосходно! Спасибо @LoicTheAztec. Просто ответ, который мне нужен
 – 
Jeffrey Fong
20 Фев 2018 в 09:20
Извините, что снова разбудил зверя, но я заметил, что этот код влияет на мою страницу Woocommerce-> settings-> email. Я активировал этот код только для писем «Завершено», но все, что находится ниже параметров писем «Завершено» на странице настроек, исчезает. [imgur.com/a/5vMPt] - с добавленным фильтром; [imgur.com/a/81ZgN] - без фильтра. Это случилось с вами в вашем тесте?
 – 
Jeffrey Fong
15 Мар 2018 в 01:05