
🚀 Як динамічно підставити заголовок сторінки в тему листа Contact Form 7
На сайті десяток сторінок із формою зворотного зв’язку, і всі листи приходять з однаковою темою «Повідомлення з сайту». З якого розділу надіслав відвідувач? З якої сторінки послуг? Доводиться вгадувати за текстом листа.
Contact Form 7, стандарт для WordPress-форм: 10+ мільйонів активних встановлень. Але з коробки він не розрізняє, з якої сторінки надіслано форму. Тему листа й тіло потрібно налаштовувати статично, одна форма на всіх сторінках видає одне й те саме.
Плагін Dynamic Text Extension (DTX) вирішує це за п’ять хвилин без жодного рядка PHP. Ви додаєте приховане поле у форму, воно автоматично підхоплює заголовок сторінки, її URL або slug. А в шаблоні листа виводите цю змінну в тему чи тіло. Далі, покроковий розбір налаштування з нуля.
💡 Швидкий огляд:
- Встановлюєте DTX із каталогу WordPress.org та активуєте поруч із Contact Form 7
- Додаєте прихований тег
[dynamichidden]із шорткодомCF7_get_post_varу форму - Вставляєте змінну в тему або тіло листа через вкладку «Лист»
- Перевіряєте надсилання на двох різних сторінках, листи приходять із різними заголовками
- За потреби додаєте URL сторінки або GET-параметри через той самий механізм
Шаг 1: Встановлення Dynamic Text Extension

Перш за все, сам плагін. Він безплатний, лежить у каталозі WordPress.org під назвою Contact Form 7, Dynamic Text Extension.
Встановлення стандартне: Плагіни → Додати новий → у пошуку «Dynamic Text Extension» → Встановити → Активувати. У вас уже має бути активним Contact Form 7, DTX розширює саме його, без CF7 він марний.
Зверніть увагу: плагін активно підтримується. На червень 2026 року в нього 100 000+ активних встановлень, рейтинг 4,5 на WordPress.org і сумісність з останньою версією WordPress. Автор, Кріс Мав (Chris Mav), він же робить UberMenu. Плагін не з тих, що закинуті після першого релізу.
Шаг 2: Додавання прихованого поля у форму
Тепер налаштування всередині Contact Form 7. Відкрийте потрібну форму: Contact → Contact Forms → клік за назвою. Ви на вкладці Форма.
Скопіюйте цей код і вставте в тіло форми, після основних полів, перед кнопкою надсилання:
1 [dynamichidden page-title "CF7_get_post_var key='title'"]
Тут відбувається ось що. dynamichidden — це тип поля DTX: воно невидиме для відвідувача, але бере участь у надсиланні. page-title, внутрішнє ім’я змінної (довільне, але осмислене). Всередині лапок, шорткод CF7_get_post_var key='title', який витягує заголовок поточної сторінки WordPress через глобальний об’єкт $post.
Якщо замість заголовка потрібен URL сторінки, замініть внутрішній шорткод на CF7_URL:
1 [dynamichidden page-url "CF7_URL"]
А якщо slug (ярлик), використовуйте CF7_get_post_var key='slug':
1 [dynamichidden page-slug "CF7_get_post_var key='slug'"]
Можна додати всі три поля одночасно, тоді в листі побачите і заголовок, і URL, і slug. Натисніть Зберегти під редактором форми.
Шаг 3: Виведення змінної в шаблон листа
Останній крок, указати Contact Form 7, куди вставити зібрані дані. Перейдіть на вкладку Лист усередині форми.
У поле Тема додайте ім’я змінної в квадратних дужках:
1 [page-title]
Повністю тема може мати такий вигляд: Сообщение: [page-title]. Або якщо ви додали URL: Заявка со страницы: [page-url].
Те саме працює в полі Тіло листа, змінну [page-title] можна вставити в будь-яке місце шаблону, до або після основного тексту повідомлення:
1 Страница отправки: [page-title] 2 URL: [page-url] 3 4 Сообщение: 5 [your-message]
Змінні page-title, page-url і page-slug — це ті самі імена, які ви задали в тегах [dynamichidden] на попередньому кроці. Вони мають збігатися один в один.
Збережіть форму та протестуйте: відкрийте дві будь-які сторінки сайту з цією формою і надішліть тестове повідомлення з кожної. Листи прийдуть із різними темами, залежно від заголовка сторінки, на якій перебував відвідувач.
Варіант із GET-параметрами
DTX вміє читати параметри з URL — це корисно, якщо ви передаєте додаткову інформацію через посилання. Наприклад, кнопка «Замовити консультацію» на сторінці тарифу може вести на /contact/?plan=pro. Шорткод для цього:
1 [dynamichidden selected-plan "CF7_GET key='plan'"]
А в шаблоні листа, [selected-plan]. Форма сама підставить значення pro з рядка запиту.
Цей самий прийом працює для UTM-міток, ідентифікаторів кампаній і будь-яких інших параметрів, які ви передаєте в URL.
У цьому відео автор плагіна Кріс Мав показує базове налаштування DTX за три хвилини, від встановлення до першого динамічного поля. Якщо описані вище кроки викликають запитання, подивіться: усі дії показано на екрані в реальному часі.
Що робити, якщо форма на всіх сторінках, а заголовки потрібні різні
Базовий сценарій, описаний вище, закриває переважну більшість випадків: одна форма, виведення заголовка в тему листа. Але що, якщо у вас десятки сторінок і на кожній, своя форма зі своїм набором полів? Створювати та налаштовувати DTX для кожної вручну, довго.
Ось три сценарії за зростанням складності:
Одна форма на всіх сторінках. Ідеальний випадок для DTX: додаєте приховане поле один раз, тема листа підхоплює
[page-title]. Налаштування за п’ять хвилин.Кілька різних форм. Налаштуйте DTX у кожній формі окремо, але копіюйте теги між формами через буфер обміну. Приховане поле з
CF7_get_post_varпрацює однаково в усіх формах.Десятки сторінок + A/B-тести. Якщо вам потрібно не просто розрізняти сторінки, а відстежувати конверсії за формами, варто дивитися в бік Gravity Forms або WPForms. У них є вбудована аналітика надсилань і маршрутизація сповіщень за умовами. DTX тут не конкурент, він вирішує конкретну задачу динамічних полів і вирішує її безплатно.
⁉️🤔 Часті запитання
Чи працює DTX з останньою версією WordPress?
Так, плагін сумісний із WordPress 6.7+ і регулярно оновлюється. Станом на червень 2026 року автор випускає оновлення кожні 1-2 місяці, останнє було в травні 2026. Перевірте версію на сторінці плагіна, там завжди вказана актуальна сумісність.
Чи можна підставити заголовок не поточної, а конкретної сторінки?
CF7_get_post_varбере дані з глобального об’єкта$post, тієї сторінки, на якій форма відображається. Щоб підставити заголовок іншої сторінки, вкажіть її ID:CF7_get_post_var key='title' post_id='42'. ID сторінки можна переглянути в адмінці: Сторінки → Усі сторінки → наведіть на назву, ID відобразиться в URL.
Що робити, якщо змінна не підставляється в лист?
Перевірте три речі. Перше: чи збігаються імена, значення атрибута в
[dynamichidden имя ...]та змінна[имя]у шаблоні мають бути однаковими, включно з регістром. Друге: чи не обгорнуто шорткод CF7 у лапки іншого типу, всередині подвійних лапок атрибути DTX мають бути в одинарних ("CF7_get_post_var key='title'"). Третє: чи активний сам Contact Form 7, без нього DTX не працює.
Навіщо приховане поле, якщо можна просто написати заголовок у темі?
Приховане поле автоматизує процес. Якщо у вас одна форма на десяти сторінках, без DTX довелося б створювати десять копій форми з різними темами або вручну змінювати тему під кожну сторінку. DTX робить це за вас: додали приховане поле один раз, і тема листа завжди збігається зі сторінкою відправлення.
Чи можна використовувати DTX для попереднього заповнення видимих полів?
Так, замініть
dynamichiddenнаdynamictextабоdynamicemail. Наприклад,[dynamictext user-name "CF7_get_current_user key='user_nicename'"]попередньо заповнить поле іменем авторизованого користувача. Відвідувач побачить підставлене значення і зможе його змінити перед відправленням.
Плагін конфліктує з кешуванням?
Ні. DTX підставляє значення на стороні сервера під час рендерингу сторінки, кеш-плагіни типу WP Rocket на це не впливають. Якщо у вас серверне кешування (Varnish, Nginx FastCGI), переконайтеся, що сторінки з формами виключені з кешу, інакше заголовок може «залипнути» на першому відвідувачеві.
Почніть із першого сценарію: встановіть DTX, додайте приховане поле у вашу поточну форму, перевірте листи з двох різних сторінок. Дев'ять із десяти сайтів на цьому зупиняються, потреби в складнішій логіці просто не виникає.



