wpconsult.ru wordpress WP Consult

WooCommerce: автоматическое создание и отправка сертификатов после покупки

Диагностика задачи: зачем автоматизировать создание сертификатов

В интернет-магазинах на WooCommerce часто требуется выдавать покупателям сертификаты (подарочные, гарантийные, обучающие курсы и пр.) после оформления заказа. Ручная генерация и рассылка сертификатов занимает много времени и увеличивает вероятность ошибок. Автоматизация процесса сгенерирует PDF-сертификаты индивидуально для каждого заказа и отправит их на почту покупателя.

Основные этапы решения задачи

  1. Отслеживание статуса оплаты заказа (обычно "завершен" или "обработан").
  2. Генерация PDF-сертификата с уникальными данными (имя клиента, номер заказа, дата и пр.).
  3. Прикрепление PDF к письму и отправка клиенту.

Практическая реализация: пример кода генерации и отправки сертификата

Подключение библиотеки для создания PDF

Для генерации PDF используем TCPDF — популярную библиотеку для PHP. Скачайте и разместите её в папке плагина или темы.

Хук на статус заказа и генерация сертификата

add_action('woocommerce_order_status_completed', 'generate_and_send_certificate', 10, 1);function generate_and_send_certificate($order_id) {    if (!$order_id) {        return;    }    $order = wc_get_order($order_id);    if (!$order) {        return;    }    // Подключаем TCPDF    require_once get_template_directory() . '/tcpdf/tcpdf.php';    // Создаем PDF    $pdf = new TCPDF();    $pdf->AddPage();    $pdf->SetFont('helvetica', '', 12);    $customer_name = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();    $order_number = $order->get_order_number();    $date = $order->get_date_created()->date('d.m.Y');    $content = "<h1>Сертификат покупателя</h1>" .     "<p>Дорогой(ая) {$customer_name},</p>" .     "<p>Благодарим за покупку. Ваш номер заказа: {$order_number} от {$date}.</p>" .     "<p>Этот сертификат подтверждает ваше право на использование приобретенного продукта.</p>";    $pdf->writeHTML($content, true, false, true, false, '');    // Сохраняем во временный файл    $upload_dir = wp_upload_dir();    $file_path = $upload_dir['basedir'] . '/certificates/certificate_order_' . $order_number . '.pdf';    if (!file_exists(dirname($file_path))) {        wp_mkdir_p(dirname($file_path));    }    $pdf->Output($file_path, 'F');    // Отправка письма с вложением    $to = $order->get_billing_email();    $subject = 'Ваш сертификат по заказу #' . $order_number;    $message = 'Здравствуйте ' . $customer_name . ', в приложении вы найдете ваш сертификат.';    $headers = array('Content-Type: text/html; charset=UTF-8');    $attachments = array($file_path);    wp_mail($to, $subject, $message, $headers, $attachments);}

Проверка результата после внедрения

  • Оформите тестовый заказ в WooCommerce и переведите его в статус "Завершен".
  • Проверьте, что в папке wp-content/uploads/certificates/ появился PDF-файл с именем сертификата.
  • Проверьте входящую почту покупателя – должно прийти письмо с вложением сертификата.
  • Откройте PDF и убедитесь, что данные заказа и покупателя корректны.

Частые ошибки и как их исправить

  • Ошибка подключения TCPDF: проверьте путь в require_once, путь должен совпадать с расположением библиотеки.
  • Папка для сертификатов не создаётся: убедитесь, что у папки wp-content/uploads есть права на запись, добавьте wp_mkdir_p() для создания папки.
  • Письмо не отправляется или приходит без вложения: проверьте настройки почты сервера, возможно, нужно настроить SMTP через плагин (например, WP Mail SMTP).
  • PDF пустой или с ошибками: проверьте правильность HTML в writeHTML() и корректность данных из заказа.

Проверочный чек-лист для отладки

  1. Подключена и доступна библиотека TCPDF.
  2. Папка для хранения сертификатов существует и доступна для записи.
  3. Хук woocommerce_order_status_completed срабатывает корректно.
  4. Формат PDF читается в популярных просмотрщиках.
  5. Почтовая функция wp_mail отправляет письма с вложением.

Альтернативные варианты: плагины против кастомного кода

Вариант Преимущества Недостатки
Плагин генерации сертификатов (например, WooCommerce PDF Invoices) Быстрая установка, готовые шаблоны, настройка через UI Меньшая гибкость, возможные избыточные функции, платные расширения
Кастомный код на PHP с TCPDF Максимальный контроль, интеграция с бизнес-логикой, возможность кастомизации Требует навыков программирования, поддержка кода на вас

Практические советы по безопасности и производительности

  • Не храните сертификаты в публичных папках без защиты — используйте htaccess для ограничения доступа.
  • Не генерируйте сертификаты при каждом переходе страницы — делайте это один раз по событию.
  • Кэшируйте результаты, если необходимо повторно показывать сертификат.
  • Проверяйте email на валидность перед отправкой.
  • Для отправки писем используйте SMTP с авторизацией, чтобы избежать попадания в спам.
  • Для массовой рассылки сертификатов используйте очередь заданий с WP-Cron или внешними сервисами.
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее