Добавьте приложение в формате PDF к уведомлению о завершении заказа WooCommerce - PullRequest
2 голосов
/ 24 мая 2019

Нашел этот код в другом потоке, но не могу заставить его работать.PDF загружен в wp-content / child-theme /.

Цель состоит в том, чтобы прикрепить PDF-файл к электронному письму с завершенным заказом, которое будет отправлено woocommerce.

Не уверены, правильно ли customer_completed_order?

add_filter( 'woocommerce_email_attachments', 'attach_terms_conditions_pdf_to_email', 10, 3 );
function attach_terms_conditions_pdf_to_email ( $attachments , $email_id, $email_object ) {
    // Avoiding errors and problems
    if ( ! is_a( $order, 'WC_Order' ) || ! isset( $email_id ) ) {
        return $attachments;
    }


    if( $email_id === 'customer_completed_order' ){

        $your_pdf_path = get_stylesheet_directory() . '/Q-0319B.pdf';
        $attachments[] = $your_pdf_path;
    }

    return $attachments;
}

1 Ответ

1 голос
/ 24 мая 2019

В вашем коде есть некоторые ошибки: Аргумент функции $email_object является неправильным именем переменной и должен быть вместо $order, чтобы соответствовать первому оператору if.

Теперь для пути присоединения, связанного стема, которую вы будете использовать:

  • get_stylesheet_directory() для дочерней темы
  • get_template_directory() для родительской темы (веб-сайт без дочерней темы)

Идентификатор электронной почты customer_completed_order правильный для целевого "завершенного" уведомления по электронной почте.

Поскольку в вашем коде не используется переменный аргумент $order, ! is_a( $order, 'WC_Order' )не требуется, поэтому рабочий код будет:

add_filter( 'woocommerce_email_attachments', 'attach_pdf_file_to_customer_completed_email', 10, 3);
function attach_pdf_file_to_customer_completed_email( $attachments, $email_id, $order ) {
    if( isset( $email_id ) && $email_id === 'customer_completed_order' ){
        $attachments[] = get_stylesheet_directory() . '/Q-0319B.pdf'; // Child theme
    }
    return $attachments;
}

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


Для родительской темы замените:

$attachments[] = get_stylesheet_directory() . '/Q-0319B.pdf'; // Child theme

на следующую строку:

$attachments[] = get_template_directory() . '/Q-0319B.pdf'; // Parent theme
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...