В этой статье мы разберём, как реализовать автоматические уведомления после отправки формы в WordPress. Такая функциональность необходима для информирования пользователя и администратора сайта о получении данных, а также для повышения удобства и контроля процесса обработки заявок.
Почему важны автоматические уведомления в формах WordPress
Формы — один из ключевых элементов взаимодействия с пользователями на сайте. Без уведомлений вы рискуете пропустить важные заявки или не подтвердить пользователю, что его сообщение принято. Автоматические уведомления позволяют:
- Уведомлять администратора сайта о новой заявке
- Подтверждать пользователю успешную отправку
- Автоматизировать дальнейшую обработку данных (например, отправку PDF, ссылок, инструкций)
Реализовать их можно как с помощью плагинов, так и собственным кодом.
Использование популярных плагинов для уведомлений в формах
Contact Form 7 и расширение Flamingo
Contact Form 7 — один из самых популярных плагинов для создания форм. По умолчанию он поддерживает отправку email-уведомлений. Для сохранения заявок в базе и лучшего контроля рекомендуем использовать Flamingo.
Чтобы настроить уведомления в Contact Form 7:
- Перейдите в админке WordPress в раздел «Contact» → «Contact Forms»
- Выберите нужную форму и перейдите в настройки «Mail»
- Укажите email администратора в поле «To» и корректно заполните остальные поля
- Для подтверждения пользователю заполните «Mail (2)» — это письмо отправится отправителю формы
Для расширенной логики можно использовать дополнительные хук wpboard_cf7_after_send_mail для выполнения своего кода после отправки формы.
Gravity Forms
Gravity Forms имеет встроенную систему уведомлений с гибкими условиями. В настройках формы вы можете добавить любое число уведомлений, выбирать получателей, шаблоны сообщений и активировать логику на основе полей формы.
Пример кода для добавления кастомного уведомления после отправки:
add_action('gform_after_submission', 'wpboard_gf_custom_notification', 10, 2);
function wpboard_gf_custom_notification($entry, $form) {
$email = rgar($entry, '2'); // поле email в форме
$subject = 'Спасибо за вашу заявку';
$message = 'Ваш запрос получен, мы свяжемся с вами в ближайшее время.';
wp_mail($email, $subject, $message);
}Создание собственного обработчика форм с уведомлениями
Пример простой формы и обработчика на PHP
Если не хотите использовать плагины, можно создать форму и обработать её самостоятельно через AJAX или POST-запрос.
HTML форма:
<form method="post" action="" id="wpboard-contact-form">
<input type="text" name="wpboard_name" placeholder="Ваше имя" required>
<input type="email" name="wpboard_email" placeholder="Email" required>
<textarea name="wpboard_message" placeholder="Сообщение" required></textarea>
<button type="submit">Отправить</button>
</form>PHP код обработки (можно добавить в functions.php вашей темы или в плагин):
function wpboard_handle_form_submission() {
if (!empty($_POST['wpboard_email']) && !empty($_POST['wpboard_message'])) {
$name = sanitize_text_field($_POST['wpboard_name']);
$email = sanitize_email($_POST['wpboard_email']);
$message = sanitize_textarea_field($_POST['wpboard_message']);
$admin_email = get_option('admin_email');
$subject_admin = 'Новая заявка с сайта';
$body_admin = "Имя: $name\nEmail: $email\nСообщение: $message";
wp_mail($admin_email, $subject_admin, $body_admin);
$subject_user = 'Спасибо за вашу заявку';
$body_user = "Здравствуйте, $name!\n
Спасибо за обращение, мы свяжемся с вами в ближайшее время.";
wp_mail($email, $subject_user, $body_user);
wpboard_redirect_with_notice('Спасибо, ваша заявка отправлена!');
exit;
}
}
add_action('init', 'wpboard_handle_form_submission');
function wpboard_redirect_with_notice($message) {
// Простейшая функция для вывода уведомления после редиректа
if (!session_id()) {
session_start();
}
$_SESSION['wpboard_notice'] = $message;
wp_redirect($_SERVER['HTTP_REFERER']);
}
function wpboard_show_notice() {
if (!session_id()) {
session_start();
}
if (!empty($_SESSION['wpboard_notice'])) {
echo '<div class="wpboard-notice">' . esc_html($_SESSION['wpboard_notice']) . '</div>';
unset($_SESSION['wpboard_notice']);
}
}
add_action('wp_footer', 'wpboard_show_notice');Разбор кода
Этот простой пример показывает, как получить данные из формы, очистить их, отправить два письма (администратору и пользователю) и показать уведомление после редиректа. Это базовый уровень, который можно усложнять, добавляя проверку nonce, CAPTCHA, логирование и интеграцию с CRM.
Рекомендации по улучшению уведомлений и безопасности
Чтобы уведомления работали стабильно и были защищены от спама, обратите внимание на следующие моменты:
- Используйте nonce-поля для защиты от CSRF-атак
- Добавляйте проверку reCAPTCHA или аналоги для борьбы со спамом
- Сохраняйте заявки в базе или используйте плагины типа Flamingo для Contact Form 7
- Проверьте настройки сервера и SMTP, чтобы письма не попадали в спам
- Используйте сторонние сервисы рассылки, если требуется высокая надежность доставки
Для удобства работы с почтой в WordPress можно подключить плагин WP Mail SMTP – он поможет настроить отправку писем через SMTP-серверы, что повысит доставляемость.
Заключение
Автоматические уведомления о обработке форм — это обязательный элемент качественного сайта на WordPress. Выбор способа реализации зависит от задач и опыта: можно использовать готовые плагины с гибкими настройками или написать собственный код для максимальной кастомизации. Главное — обеспечить пользователю и администратору своевременную обратную связь и не забывать о безопасности и надежности отправки писем.