Добавление получателей из настраиваемых полей продукта в уведомление по электронной почте о новом заказе Woocommerce

В Woocommerce я хотел бы добавить настраиваемое поле электронной почты с плагином Advanced Custom Fields к типу сообщения о товарах.

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

Как добавить получателей из настраиваемых полей продукта в уведомление по электронной почте о новом заказе Woocommerce?


person Kapil Goyal    schedule 19.04.2018    source источник


Ответы (1)


Для уведомления по электронной почте «Новый заказ» вот способ добавления настраиваемых сообщений электронной почты из элементов в заказе (настраиваемое поле электронной почты устанавливается с помощью ACF в продуктах).

Итак, вы сначала установите настраиваемое поле в ACF для типа сообщения "продукт":

введите здесь описание изображения

Тогда у вас появятся страницы редактирования бэкэнд-продукта:

введите здесь описание изображения

После этого и когда все настраиваемые поля продукта будут содержать адрес электронной почты, вы будете использовать этот код, который добавит в уведомление «Новый заказ» электронные письма для каждого соответствующего элемента в заказе:

add_filter( 'woocommerce_email_recipient_new_order', 'add_item_email_to_recipient', 10, 2 );
function add_item_email_to_recipient( $recipient, $order ) {
    if( is_admin() ) return $recipient;

    $emails = array();

    // Loop though  Order IDs
    foreach( $order->get_items() as $item_id => $item ){
        // Get the student email
        $email = get_field( 'product_email', $item->get_product_id() );
        if( ! empty($email) )
            $emails[] = $email; // Add email to the array
    }

    // If any student email exist we add it
    if( count($emails) > 0 ){
        // Remove duplicates (if there is any)
        $emails = array_unique($emails);
        // Add the emails to existing recipients
        $recipient .= ',' . implode( ',', $emails );
    }
    return $recipient;
}

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

Связано: Отправить заказ Woocommerce на адрес электронной почты указаны на странице продукта

person LoicTheAztec    schedule 19.04.2018
comment
Спасибо за этот код, код работает нормально. Но я хочу это письмо в куб. - person Kapil Goyal; 09.06.2018
comment
@KapilGoyal Чтобы сделать это с CC, вам нужно использовать другой крючок, как в этой ветке ответов: stackoverflow.com/questions/49782495/… Поскольку этот ответ в любом случае полезен и работает , если хотите / можете принять ответ, спасибо. - person LoicTheAztec; 09.06.2018
comment
Спасибо, @Loic TheAztec за ваши отличные решения по отправке уведомлений по электронной почте о заказе на адрес электронной почты в настраиваемом поле. Эта работа идеально подходит для меня. - person Ketan; 02.11.2018