WPForms — один из самых популярных плагинов для создания форм в WordPress. Часто возникает задача настроить автоматическую отправку email по определённым условиям, например, при заполнении формы или при определённых значениях в полях. В этой статье мы подробно разберём, как сделать гибкую настройку автоматической отправки email с помощью WPForms, дополним примером кода для расширенных сценариев.
Основные настройки email в WPForms
WPForms из коробки поддерживает отправку уведомлений на email при отправке формы. Для настройки перейдите в редактор формы, откройте вкладку "Настройки" → "Уведомления". Здесь можно указать email получателя, тему письма, тело и дополнительные параметры.
Однако стандартных настроек может не хватать, если нужно, например, отправлять письма только при выполнении определённых условий, менять получателя динамически или интегрировать отправку с внешними сервисами.
Для таких случаев понадобится немного доработать функционал, используя хуки WPForms.
Использование хука wpforms_process_complete для расширенной обработки
Хук wpforms_process_complete срабатывает после успешной отправки формы. С его помощью можно получить данные формы, проверить условия и отправить email программно.
Рассмотрим пример кода, который отправляет письмо, только если в поле "Тип запроса" выбрано значение "Техническая поддержка".
add_action('wpforms_process_complete', 'wpdevelop_send_custom_email', 10, 4);
function wpdevelop_send_custom_email($fields, $entry, $form_data, $entry_id) {
// ID формы, для которой применяем логику
$target_form_id = 123;
if ($form_data['id'] != $target_form_id) {
return;
}
// Предположим, поле с типом запроса имеет ID 4
$request_type = isset($fields[4]) ? $fields[4]['value'] : '';
if ($request_type === 'Техническая поддержка') {
$to = 'support@wpdevelop.ru';
$subject = 'Новый запрос технической поддержки';
$message = "Поступил новый запрос с формы.\n\n";
foreach ($fields as $field) {
$message .= $field['name'] . ': ' . $field['value'] . "\n";
}
wp_mail($to, $subject, $message);
}
}
Такой подход позволяет полностью контролировать процесс отправки email и расширять логику по необходимости.
Динамическая смена получателя письма в WPForms
Иногда требуется отправлять уведомления разным отделам в зависимости от выбранного значения в форме. Например, если пользователь выбрал "Продажи" — письмо идёт в отдел продаж, если "Поддержка" — в техподдержку.
Для этого удобно использовать фильтр wpforms_email_headers или вышеописанный хук с программной отправкой.
Пример с изменением заголовков email:
add_filter('wpforms_email_headers', 'wpdevelop_change_email_recipient', 10, 3);
function wpdevelop_change_email_recipient($headers, $email, $form_data) {
$target_form_id = 123;
if ($form_data['id'] != $target_form_id) {
return $headers;
}
// Получаем данные из POST напрямую (или можно передавать через глобальные)
$request_type = isset($_POST['wpforms']['fields'][4]) ? sanitize_text_field($_POST['wpforms']['fields'][4]) : '';
$to = '';
switch ($request_type) {
case 'Продажи':
$to = 'sales@wpdevelop.ru';
break;
case 'Поддержка':
$to = 'support@wpdevelop.ru';
break;
default:
$to = 'info@wpdevelop.ru';
}
if ($to) {
// Заменяем заголовок To
$headers = "To: " . $to . "\r\n";
}
return $headers;
}
Этот фильтр перехватывает заголовки email и меняет получателя в зависимости от выбранного значения.
Интеграция с плагином Clearfy Pro для оптимизации отправки
Если вы используете Clearfy Pro для оптимизации сайта, убедитесь, что в настройках оптимизации не отключена функция отправки почты WordPress, иначе письма с WPForms не будут уходить.
Clearfy Pro позволяет управлять разными аспектами безопасности и производительности, но важно тестировать отправку email после изменений.
Отладка и тестирование отправки email в WPForms
Для отладки отправки писем можно использовать плагин WP Mail SMTP — он помогает проверять работу почтовой функции и логировать отправленные письма.
Также в коде можно добавить логирование через error_log() для отслеживания значений и ошибок.
Например:
error_log('Отправка email с типом запроса: ' . $request_type);
Заключение
Настройка автоматической отправки email из WPForms — задача, которая часто выходит за рамки стандартных настроек плагина. Использование хуков и фильтров WordPress позволяет гибко управлять процессом, реализовывать сложные сценарии и интегрировать отправку с другими сервисами.
В статье рассмотрен пример отправки email по условию, смены получателя и советы по отладке. Для расширения функционала рекомендуем изучать документацию WPForms и использовать проверенные плагины, такие как Clearfy Pro и WP Mail SMTP.