Как прикрепить файл к email-письму

У меня на блоге уже есть уроки, в которых я показывал, как добавлять какой-то произвольный текст или HTML в письма клиентам в WooCommerce. Также мы пробовали изменять темы писем, добавляя в них имя клиента.

Но дело в том, что иногда бывает нужно прикрепить к письмам какой-либо PDF-документ. Но стандартными настройками WooCommerce в админке этого не достичь. Попробуем достигнуть это маленьким сниппетом кода.

Также хочу порекомендовать вам свой видеокурс по WooCommerce, где мы создаём тему для интернет-магазина на основе готовой вёрстки.

1. Сначала загрузите файл, например через админку

Куда вы хотите его загрузить – зависит от вас. Однако я рекомендую попробовать это сделать прямо через раздел Медиафайлы в админке.

Загрузка медиафайла в админке WooCommerce

2. Определяем ID загруженного медиафайла и используем его в сниппете.

Для того, чтобы узнать ID, вы можете перейти в редактирование вашего файла и обнаружить его в строке URL, смотрите на скриншоте ниже:

как определить ID медиафайла в WordPress
В данном примере соответственно ID медиафайла равен 132.

И теперь мы можем использовать его в сниппете ниже для прикрепления к письмам, например в данном примере это письма о новом заказе и об обработке заказа:

/**
 * @snippet       Прикрепляем файл к письму о новом заказе и об обработке заказа
 * @author        Миша Рудрастых
 * @url           https://misha.agency/woocommerce/kak-prikrepit-fajl-k-email.html
 */
add_filter( 'woocommerce_email_attachments', 'truemisha_file_attachment_in_emails', 25, 4 );
 
function truemisha_file_attachment_in_emails( $attachments, $email_id, $order, $email ) {
 
	$file_id = 132; // тут указываем ID нашего файла вложения
	$email_ids = array( 'new_order', 'customer_processing_order' ); // к каким емейлам прикрепить
 
	if ( in_array ( $email_id, $email_ids ) ) {
		$attachments[] = get_attached_file( $file_id );
	}
 
	return $attachments;
 
}
  • Если не знаете, куда вставлять код, читайте это руководство.
  • Подробнее про функцию get_attached_file().
  • Как узнать ID писем в WooCommerce? Примерно так же, как и узнавали ID файла. Переходим в WooCommerce > Настройки > Email’ы, выбираем нужное письмо, переходим в редактирование, чекаем URL открывшейся страницы и видим там например section=wc_email_customer_processing_order, значит ID письма customer_processing_order.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 2

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал