Коли ти працюєш із WordPress і WooCommerce, рано чи пізно виникає потреба відправити email не зі стандартного сценарію (типу нового замовлення), а з власної логіки. Це може бути що завгодно: створення кастомної сторінки, обробка форми, інтеграція з API або навіть внутрішня автоматизація. І тут постає вибір: або писати власний HTML-шаблон з нуля, або використати вже готову систему WooCommerce.

Якщо ти займаєшся back-end розробкою і активно використовуєш PHP у веб-розробці, другий варіант виглядає значно привабливіше. Чому? Бо WooCommerce вже має готову систему стилізації листів, яка виглядає значно краще, ніж звичайний текст.

Чому не варто використовувати стандартний mail()

Функція mail() у PHP — це базовий інструмент. Вона працює, але виглядає це… м’яко кажучи, не дуже. Листи без стилів, без структури, часто потрапляють у спам і не викликають довіри.

У сучасній веб-розробці користувач очікує гарно оформлений email із логотипом, кольорами бренду та читабельною структурою. І саме це вже є у WooCommerce «з коробки».

Готове рішення: використовуємо mailer WooCommerce

Замість того, щоб вигадувати велосипед, ти можеш використати внутрішній mailer WooCommerce. Він дозволяє:

  • обгорнути повідомлення у стандартний шаблон;
  • додати заголовок листа;
  • застосувати inline-стилі;
  • забезпечити кращу доставку листів.

Ось проста функція, яку я використовую практично в кожному проєкті:


function send_email_woocommerce_style($email, $subject, $heading, $message)
{
    define("HTML_EMAIL_HEADERS", array('Content-Type: text/html; charset=UTF-8'));
    $mailer = WC()->mailer();
    $wrapped_message = $mailer->wrap_message($heading, $message);
    $wc_email = new WC_Email;
    $html_message = $wc_email->style_inline($wrapped_message);
    $mailer->send($email, $subject, $html_message, HTML_EMAIL_HEADERS);
}

Куди вставити цю функцію

Найпростіший варіант — додати її у файл functions.php твоєї теми. Якщо ти працюєш більш структуровано (що рекомендую у back-end розробці), краще винести це в окремий helper-файл або навіть у власний плагін.

Як використовувати функцію

Тепер замість стандартного підходу:


mail($to, $subject, $message, $headers);

ти просто викликаєш свою функцію:


send_email_woocommerce_style($to, $subject, $heading, $message);

Що означають параметри

  • $to — email отримувача;
  • $subject — тема листа;
  • $heading — заголовок у самому листі (відображається у шапці);
  • $message — HTML-контент повідомлення.

Приклад використання в реальному сценарії

Уявімо, що ти створюєш кастомну форму і хочеш після її відправки надіслати користувачу підтвердження:


$to = 'user@example.com';
$subject = 'Дякуємо за заявку';
$heading = 'Ми отримали твою заявку';
$message = '<p>Дякуємо за звернення! Ми зв’яжемося з тобою найближчим часом.</p>';

send_email_woocommerce_style($to, $subject, $heading, $message);

У результаті користувач отримає не сухий текст, а повноцінний брендований email у стилі WooCommerce. І це виглядає значно професійніше 😉

Чому це хороший підхід

Якщо ти серйозно займаєшся PHP і WordPress, то такі дрібниці формують загальну якість продукту. Використання WooCommerce mailer дає тобі:

  • менше коду для підтримки;
  • уніфікований вигляд листів;
  • кращу UX-комунікацію з користувачем;
  • менше шансів потрапити у спам.

Декілька нюансів, про які варто знати

  • WooCommerce має бути активним — інакше WC() не працюватиме;
  • не використовуй define() всередині функції, якщо викликаєш її багато разів (краще винести глобально);
  • HTML у $message має бути валідним;
  • для складніших листів можна підключати власні шаблони WooCommerce.

Підсумок

Якщо коротко: не вигадуй складні рішення там, де WooCommerce вже все зробив за тебе. Використовуючи його mailer, ти отримуєш красиві, структуровані email буквально за кілька рядків коду. Це швидше, зручніше і виглядає значно краще для користувача.

І так — отримувати такі листи набагато приємніше, ніж звичайний текст 🙂

Шаблони Email