Добавьте вложение к электронному уведомлению администратора после размещения заказа в Woocommerce

Я пытаюсь отправить файл PDF администратору магазина после размещения нового заказа. Проблема с ловушкой woocommerce_email_attachments заключается в том, что электронное письмо отправляется как клиенту, так и администратору.

add_filter( 'woocommerce_email_attachments', 'attach_order_notice', 10, 3 );

function attach_order_notice ( $attachments, $id, $object ) {
    $pdf_path = get_template_directory() . '/notice.pdf';
    $attachments[] = $pdf_path;
    return $attachments;
}

На данный момент и клиент, и администратор получают электронные письма с новыми заказами (включая вложения), и я ожидаю, что и клиент, и администратор получат электронные письма с новыми заказами, но отправят только вложение администратору.

Это вообще возможно?


person user9089431    schedule 12.12.2017    source источник


Ответы (1)


$id - это WC_Email идентификатор, который вы можете использовать для таргетинга на конкретное электронное уведомление, такое как «Новый заказ», которое отправляется администратору после успешного размещения Заказа, следующим образом:

add_filter( 'woocommerce_email_attachments', 'attach_order_notice', 10, 3 );
function attach_order_notice ( $attachments, $email_id, $order ) 
{
    // Only for "New Order" email notification (for admin)
    if( $email_id == 'new_order' ){
        $attachments[] = get_template_directory() . '/notice.pdf';
    }
    return $attachments;
}

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

Проверено и работает

person LoicTheAztec    schedule 12.12.2017
comment
Это превосходно! Работает как положено. Очень признателен! - person user9089431; 12.12.2017
comment
если вы используете это в дочерней теме, используйте get_stylesheet_directory(), чтобы получить путь к вашей директории дочерней темы - person Mark; 05.12.2019