Как добавить отдельное сообщение об успешной отправке для каждой формы Contact Form 7

Когда на сайте несколько форм Contact Form 7, стандартное сообщение после отправки быстро становится проблемой: пользователи видят один и тот же текст, а вы не можете нормально разделить сценарии «заявка», «вопрос», «заказ звонка» или «подписка». Обычно это всплывает после запуска лендинга, когда маркетинг просит разные подтверждения для разных форм, а в админке CF7 нет отдельного поля для уникального success message на каждую форму.

Решается это без тяжёлых плагинов: через фильтр wpcf7_messages можно подменять текст подтверждения в зависимости от ID формы. Для этого не нужно ломать шаблоны темы и не нужно править сам плагин.

Когда стандартного сообщения Contact Form 7 уже недостаточно

Одинаковый текст после отправки формы мешает в трёх типичных сценариях:

  • на одной странице стоят несколько форм, и пользователь не понимает, какая именно отправилась;
  • нужно показать разный следующий шаг: «мы перезвоним», «проверьте почту», «заявка принята в работу»;
  • контент-менеджер хочет менять текст без правки шаблонов и без риска сломать разметку.

Если форма одна, можно жить и со стандартным сообщением. Но как только форм становится несколько, лучше привязать текст к конкретной форме или к конкретному сценарию.

Диагностика: что именно нужно менять

Сначала проверьте, где формируется сообщение. В Contact Form 7 есть два разных уровня:

  • текст, который видит пользователь после успешной отправки;
  • текст, который приходит в письмо или уходит в CRM через интеграцию.

В этой статье речь именно о первом случае. Если проблема в письмах, это уже другая задача: там нужно смотреть mail-схему, SMTP и обработку отправки.

Чтобы не гадать, откройте нужную форму в админке и запишите её ID. Его можно увидеть в списке форм или в шорткоде вида [contact-form-7 id="123" title="Обратная связь"]. Именно по этому ID удобно различать сообщения.

Рабочее решение через фильтр wpcf7_messages

Самый надёжный вариант — добавить код в functions.php дочерней темы или в небольшой mu-plugin. Так вы не потеряете правку после обновления темы.

Пример: разные тексты для двух форм

<?php
add_filter( 'wpcf7_messages', function( $messages ) {
	if ( ! function_exists( 'wpcf7_get_current_contact_form' ) ) {
		return $messages;
	}

	$form = wpcf7_get_current_contact_form();
	if ( ! $form ) {
		return $messages;
	}

	$form_id = (int) $form->id();

	if ( 123 === $form_id ) {
		$messages['mail_sent_ok'] = array(
			'description' => 'Форма заявки на консультацию',
			'default'     => 'Спасибо! Ваша заявка отправлена. Мы свяжемся с вами в ближайшее время.',
		);
	}

	if ( 456 === $form_id ) {
		$messages['mail_sent_ok'] = array(
			'description' => 'Форма вопроса в поддержку',
			'default'     => 'Сообщение отправлено. Ответ придёт на указанную почту, если вы её оставили.',
		);
	}

	return $messages;
} );

Здесь мы меняем именно сообщение mail_sent_ok — то, что показывается при успешной отправке. Для разных форм задаются разные тексты, а логика остаётся в одном месте.

Если нужен не только текст, но и отдельный следующий шаг

Иногда после отправки формы нужно не просто показать сообщение, а ещё и направить пользователя на отдельную страницу благодарности. В таком случае лучше не перегружать success message, а использовать редирект через JavaScript или отдельную логику обработки события CF7. Но если задача только в тексте, фильтра достаточно.

Альтернативы: плагин, код или шаблон страницы

ПодходПлюсыМинусы
Код через wpcf7_messagesБез лишних зависимостей, гибко, работает точечноНужен доступ к коду и базовая дисциплина при обновлениях
Отдельный плагин для кастомизации CF7Удобно для редактора, меньше ручной работыДополнительный слой, возможны конфликты и лишние настройки
Одинаковый текст для всех формСамый простой вариантПутает пользователей, плохо масштабируется

Если у вас одна-две формы и нужен только разный текст, код обычно проще и чище. Плагин имеет смысл, когда правки должны делать не разработчики.

Пошаговая настройка без лишних рисков

  1. Определите ID каждой формы Contact Form 7.
  2. Добавьте код в дочернюю тему или mu-plugin.
  3. Задайте отдельный текст для нужных ID.
  4. Очистите кэш, если на сайте есть кеширование страниц.
  5. Проверьте отправку каждой формы в браузере без автозаполнения и без блокировщиков.

Если вы используете кэш на уровне сервера или плагина, не забудьте проверить страницу в режиме инкогнито. Иногда кажется, что сообщение не поменялось, хотя на самом деле вы видите старую версию страницы из кэша.

Как проверить, что решение сработало

Проверка должна быть не формальной, а по сценарию:

  • отправьте форму с ID 123 и убедитесь, что показывается именно её текст;
  • отправьте форму с ID 456 и проверьте другой текст;
  • посмотрите, не сломалась ли валидация полей и не исчезло ли стандартное сообщение об ошибке;
  • проверьте мобильную версию, если сообщение выводится в узком контейнере;
  • сравните поведение на страницах с кэшем и без него.

Если текст не меняется, чаще всего причина в том, что код добавлен не туда, где он реально загружается, или в том, что тема/плагин переопределяет вывод сообщения своим скриптом.

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

Ошибка: код добавили в родительскую тему

После обновления темы правка исчезнет. Для таких изменений используйте дочернюю тему или mu-plugin.

Ошибка: перепутали ID формы

Визуально формы могут выглядеть одинаково, но ID у них разные. Сверяйте его в шорткоде или в списке форм в админке.

Ошибка: меняют не тот ключ сообщения

Для успеха нужен ключ mail_sent_ok. Если править другой элемент массива, пользователь ничего не увидит.

Ошибка: ожидают, что это изменит письмо

Этот фильтр отвечает за текст на экране после отправки. Письмо и текст в письме настраиваются отдельно.

Что учесть по безопасности и производительности

Сам код лёгкий и не создаёт заметной нагрузки. Но есть несколько практических моментов:

  • не вставляйте код в случайные сниппет-плагины без понимания, как они переживают обновления;
  • не дублируйте одну и ту же логику в нескольких местах;
  • если форма используется на высоконагруженной странице, держите код коротким и без лишних запросов к базе;
  • не выводите в сообщение персональные данные или внутренние детали обработки заявки.

Если вам нужно не только разное сообщение, но и разная логика для нескольких форм, лучше вынести это в отдельный мини-плагин. Так проще сопровождать код и не зависеть от темы.

Когда лучше не ограничиваться сообщением

Если задача шире, чем просто текст подтверждения, посмотрите на сценарий целиком. Иногда пользователю нужен не success message, а отдельная страница спасибо, письмо с подтверждением, редирект в CRM или показ дополнительного блока с инструкцией. В таких случаях одна строка в сообщении уже не решает проблему полностью.

Но если нужно именно разделить тексты для разных форм Contact Form 7, фильтр wpcf7_messages остаётся самым прямым и проверяемым способом без лишней зависимости от сторонних решений.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как добавить отдельное сообщение об успешной отправке для каждой формы Contact Form 7
27.09.2026
Contact Form 7 не отправляет письма через SMTP: как найти причину и исправить
24.09.2026
Как отключить скрипты Contact Form 7 на страницах без формы
24.09.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше