Skip to content

Все для WordPress, веб-розробки — і не тільки

🧩 Умовні поля в Contact Form 7: покроковий посібник з налаштування

🧩 Умовні поля в Contact Form 7: покроковий посібник з налаштування

Потрібна форма зворотного зв’язку, яка підлаштовується під вибір користувача: техпідтримка, показуємо одні поля, відділ продажів, зовсім інші. Стандартний Contact Form 7 такого не вміє. Без умовної логіки на сторінці висить простирадло з усіх полів одразу, половина з яких відвідувачу не потрібна. Виглядає неохайно і збиває з пантелику.

Плагін Conditional Fields** for Contact Form 7** вирішує цю проблему: поля з’являються і зникають залежно від того, що обрав користувач. Далі, покрокове складання реальної форми підтримки: від встановлення плагіна до персоналізованих email-відповідей. Той самий підхід масштабується на калькулятори, опитувальники та багатокрокові заявки.

💡 Швидкий огляд:

  • Встановлюємо CF7 і Conditional Fields, створюємо базову форму з типом звернення
  • Огортаємо групи полів у [group]…[/group], налаштовуємо умови показу через вкладку «Conditional fields»
  • Збираємо фінальну форму з вкладеними групами, динамічними підписами та кастомною гілкою «Інше»
  • Налаштовуємо персоналізований email: різний текст і різний набір полів для техпідтримки та продажів

Що дають умовні поля

Contact Form 7, найпопулярніший конструктор форм для WordPress: 10+ мільйонів активних встановлень, мінімум накладних витрат. Але з коробки він статичний: усі поля видно завжди. Якщо у формі три гілки логіки (техпідтримка, продажі, партнерство), відвідувач бачить дев’ять зайвих полів, які не стосуються його запиту.

Conditional Fields for Contact Form 7 додає логіку «якщо, то» прямо в редактор форм. Плагін безкоштовний, з рейтингом 4,8 на WordPress.org і 100 000+ активних встановлень. Автор, Jules Colle, він же розвиває Pro-версію з повторюваними полями, багатокроковими формами та обчислюваними значеннями.

Важливо: плагін не видаляє приховані поля з розмітки, а лише ховає їх через JavaScript. Тому всі поля всередині прихованих груп однаково надсилаються на сервер. Імена полів (field names) мають бути унікальними навіть у різних групах, інакше значення перезапишуться. Це правило номер один, і на практиці об нього спотикаються найчастіше.

Встановлення та початкова форма

Встановіть обидва плагіни через Plugins → Add New:

Після активації зайдіть у Contact → Add New і вставте заготовку форми. Поки без умовних груп, просто всі поля разом:

1Your name: [text your-name]
2Your email address: [email your-email]
3
4What kind of support do you want?
5[select support-type first_as_label "-- Choose support type --" "Technical support" "Sales"]
6
7Your operating system: [select operating-system first_as_label "-- Choose your operating system --" "Android" "iOS" "Linux" "Windows"]
8
9In case you selected Technical support:
10Please specify your OS version: [text version]
11
12In case you selected Sales:
13Where is your business located? [select continent first_as_label "-- Choose your continent --" "Europe" "America" "Africa" "Asia" "Oceania" "Antarctica"]
14
15[textarea comments]
16
17[submit "Send"]

Ось так виглядає форма без логіки: вибір операційної системи та поля техпідтримки видно завжди, навіть якщо відвідувач обрав «Sales». Варіанта «Інша ОС» немає взагалі, а підпис до поля версії не змінюється під обрану систему. Виправляємо це групами.

Створення груп полів

Група — це пара тегів [group имя-группы] ... [/group]. Усе, що між ними, за замовчуванням приховане і показується лише при спрацюванні умови. Групи можна вкладати одна в одну — це знадобиться для каскадної логіки.

У редакторі форми натисніть кнопку Conditional group над текстовим полем, вона додає теги автоматично.

Вікно створення групи умовних полів у редакторі CF7

У вікні, що з’явилося, задайте ім’я групи та опції:

  • Clear on hide, очищає всі поля всередині групи, коли та приховується. Корисно, щоб в email не потрапляли значення з невидимих полів.
  • Inline, відображає групу як рядковий елемент. Стає в пригоді, коли потрібно вбудувати шматок тексту прямо в речення (пізніше покажу як).

Створіть першу групу technical-support-selected і перенесіть у неї поля операційної системи та версії:

1[group technical-support-selected]
2 Your operating system: [select operating-system first_as_label "-- Choose your operating system --" "Android" "iOS" "Linux" "Windows"]
3 [group os-selected]
4 Please specify your OS version: [text version]
5 [/group]
6[/group]

Тут уже дві групи, одна всередині іншої. Зовнішня (technical-support-selected), сам факт техпідтримки. Внутрішня (os-selected), уточнення версії ОС, яке з’явиться ТІЛЬКИ тоді, коли користувач вибрав конкретну операційну систему. Без умови обидві групи поки що невидимі.

Те саме для відділу продажів:

1[group sales-support-selected]
2 Where is your business located?
3 [select continent first_as_label "-- Choose your continent --" "Europe" "America" "Africa" "Asia" "Oceania" "Antarctica"]
4[/group]

Збережіть форму, і групи зникнуть із фронтенду. Це нормально: умов іще немає.

Налаштування умовної логіки

Зберігши форму, перейдіть на вкладку Conditional fields. Тут є два режими: візуальний (випадні списки) і текстовий (пишете правила вручну). Текстовий швидший для складних форм, його й візьмемо.

Натисніть Add new conditional rule і впишіть перше правило:

1show [technical-support-selected] if [support-type] equals "Technical support"

Синтаксис прямий: show <группа> if <поле> equals "<значение>". Після збереження правила група technical-support-selected стане видимою, щойно користувач вибере «Technical support» у випадному списку.

Додайте правило для продажів:

1show [sales-support-selected] if [support-type] equals "Sales"

Тепер форма перемикається між двома гілками, але всередині техпідтримки поле версії досі показується завжди. Потрібно, щоб воно з’являлося тільки після вибору конкретної ОС:

1show [os-selected] if [operating-system] not equals ""

Перевірка not equals "" працює тому, що ми використовуємо first_as_label, і значення -- Choose your operating system -- не вважається вибраним. Поле operating-system порожнє, поки відвідувач реально не клікнув по варіанту.

Ідемо далі: у випадний список ОС варто додати пункт «Other». Якщо користувач вибирає «Іншу», ми не знаємо, що то за ОС, тож дамо два текстових поля: назву системи та версію. Потрібна нова група os-other-selected і правило з оператором AND:

1show [os-selected] if [operating-system] not equals ""
2 and if [operating-system] not equals "Other"
3show [os-other-selected] if [operating-system] equals "Other"

Два правила на одну групу: перше, показувати os-selected для будь-якої ОС, крім «Other», друге, показувати os-other-selected тільки для «Other». Логіка взаємовиключна, конфліктів не буде.

Фінальна форма: динамічні підписи та гілка «Інше»

Тепер зберемо все разом. Додамо inline-групи, які змінюють підпис до поля версії залежно від вибраної ОС: Android, iOS, Linux або Windows. Текст підпису «вшивається» прямо в групу й з’являється тільки при збігу умови:

1Your name: [text your-name]
2Your email address: [email your-email]
3
4What kind of support do you want?
5[select support-type first_as_label "-- Choose support type --" "Technical support" "Sales"]
6
7[group technical-support-selected]
8 Your operating system: [select operating-system first_as_label "-- Choose your operating system --" "Android" "iOS" "Linux" "Windows" "Other"]
9
10 [group os-selected]
11 Please specify your [group os-android inline]Android[/group][group os-ios inline]iOS[/group][group os-linux inline]Linux[/group][group os-windows inline]Windows[/group] version:
12 [text version]
13 [/group]
14
15 [group os-other-selected]
16 Please specify your OS and version.
17 [text other-os "Operating System"][text other-version "Version"]
18 [/group]
19[/group]
20
21[group sales-support-selected]
22 Where is your business located?
23 [select continent first_as_label "-- Choose your continent --" "Europe" "America" "Africa" "Asia" "Oceania" "Antarctica"]
24[/group]
25
26[textarea comments]
27
28[submit "Send"]

Ключовий момент: inline-групи з назвами ОС ([group os-android inline]Android[/group]). Атрибут inline робить групу рядковим елементом, і текст підпису не розбивається на абзаци. Умови для цих груп на вкладці Conditional fields:

1show [technical-support-selected] if [support-type] equals "Technical support"
2show [sales-support-selected] if [support-type] equals "Sales"
3show [os-selected] if [operating-system] not equals ""
4 and if [operating-system] not equals "Other"
5show [os-android] if [operating-system] equals "Android"
6show [os-ios] if [operating-system] equals "iOS"
7show [os-linux] if [operating-system] equals "Linux"
8show [os-windows] if [operating-system] equals "Windows"
9show [os-other-selected] if [operating-system] equals "Other"

Натисніть Save conditions, потім збережіть форму. Скопіюйте шорткод [contact-form-7 id="..." title="..."] на сторінку й перевірте на фронтенді. Перемикання між гілками має працювати миттєво, без перезавантаження сторінки.

Персоналізація email-відповіді

Умовні групи працюють не тільки у формі, а й у шаблоні листа. Це означає, що користувач може отримати різний email залежно від того, що вибрав.

Відкрийте вкладку Mail у редакторі форми. У полі Message body обгорніть текст у ті самі групи, що використовували у формі:

1[technical-support-selected]
2Thank you for submitting your technical support question
3[/technical-support-selected][sales-support-selected]
4Thank you for your sales question
5[/sales-support-selected]

Закривний тег [/technical-support-selected] і відкривний [sales-support-selected] ідуть впритул, без пробілу, інакше в листі з’явиться зайвий відступ.

Тепер додамо таблицю із заповненими полями. Усередині кожної групи перелічимо ТІЛЬКИ релевантні поля:

1<table>
2<tr><td>your-name</td><td>[your-name]</td></tr>
3<tr><td>your-email</td><td>[your-email]</td></tr>
4<tr><td>support-type</td><td>[support-type]</td></tr>
5[technical-support-selected]
6 <tr><td>operating-system</td><td>[operating-system]</td></tr>
7 [os-selected]
8 <tr><td>version</td><td>[version]</td></tr>
9 [/os-selected]
10 [os-other-selected]
11 <tr><td>other-os</td><td>[other-os]</td></tr>
12 <tr><td>other-version</td><td>[other-version]</td></tr>
13 [/os-other-selected]
14[/technical-support-selected]
15[sales-support-selected]
16 <tr><td>continent</td><td>[continent]</td></tr>
17[/sales-support-selected]
18<tr><td>comments</td><td>[comments]</td></tr>
19</table>

Коли форма надсилається, плагін виріже з листа все, що стосується прихованих груп. Техпідтримка отримає рядки з ОС і версією, продажі, лише континент. Чисто й без плутанини.

Якщо потрібно збирати листи вручну та виправляти розмітку, автор плагіна зробив вебконвертер коду CF7 у тіло листа. Вставляєте код форми, отримуєте заготовку таблиці для email.

⁉️🤔 Часті запитання

Чому всі групи видно, умови не працюють?

По-перше, перевірте консоль браузера (F12) на помилки JavaScript. Conditional Fields завантажує свій скрипт останнім, і будь-яка помилка JS до нього ламає всю логіку. По-друге, тема повинна викликати wp_footer() у footer.php. Без цього хука скрипт не підключиться. Найчастіше винен конфлікт плагінів: вимкніть усе, крім CF7 і Conditional Fields, і перевірте форму. Запрацювало, вмикайте плагіни по одному, поки не знайдете винуватця.

Поля в email приходять із неправильними або порожніми значеннями.

Імена всіх полів у формі мають бути унікальними, навіть якщо поля знаходяться в різних групах і ніколи не видимі одночасно. Плагін НЕ видаляє приховані поля під час надсилання, а лише ховає їх візуально. Два поля з іменем a в різних групах — це два значення для одного ключа, і переможе одне з них. Переконайтеся, що кожне поле має своє ім’я.

Як зробити форму з кроками та повторюваними полями?

Безплатна версія цього не вміє, потрібен Conditional Fields Pro. Він додає мультистеп (розбивка на кроки з кнопками «Далі»), повторювані блоки полів (repeater) та обчислювані значення (calculated fields). Вартість, на сайті розробника, залежить від кількості сайтів. Якщо форма проста й без повторювачів, безплатної версії вистачає із запасом.

Що робити, якщо плагін конфліктує з темою?

Увімкніть стандартну тему WordPress (Twenty Twenty-Five) і перевірте форму на ній. Працює, проблема в темі. Зазвичай допомагає ручний виклик wp_footer() або перенесення форми на іншу сторінку, де немає важких скриптів теми. Якщо тема кастомна, попросіть розробника переконатися, що хук wp_footer() викликається на всіх сторінках із формами.

Чи можна використовувати умовні поля для калькулятора вартості?

Так, і це один із найчастіших сценаріїв. Набір розкривних списків (тип послуги, обсяг, терміновість) з умовними групами під кожен варіант. Pro-версія додає повноцінні обчислювані поля, якщо потрібно множити й підсумовувати значення прямо у формі,, зверніть увагу на неї.

Що робити далі: від прототипу до бойової форми

Ми зібрали форму підтримки з двома гілками логіки, вкладеними групами та персоналізованим email. Цей самий підхід працює для будь-якого сценарію з умовами: опитувальники з розгалуженням, калькулятори, реєстрації з різними ролями.

На що звернути увагу перед запуском у бій:

  • Перевірте унікальність імен УСІХ полів, повторимося — це правило номер один.
  • Протестуйте форму на мобільному: довгі списки варіантів і вкладені групи можуть гальмувати на слабких пристроях.
  • Налаштуйте захист від спаму, Contact Form 7 товаришує з reCAPTCHA v3, Akismet і Turnstile.

Якщо логіка форми виходить за межі «показати/сховати» і потрібні повторювачі, обчислення або кілька кроків, придивіться до Conditional Fields Pro. А для більшості завдань безплатної версії достатньо: вона стабільна, оновлюється кожні кілька тижнів і працює з Contact Form 7 версії 6.1.6 та WordPress 7.0.

Подивіться відеодемонстрацію всього ланцюжка від встановлення до готової форми — це закріпить кожен крок на живому прикладі: