Автоматизація лендінгів на WordPress: динамічний контент під UTM і гео
Замість того щоб клонувати десятки майже однакових сторінок під кожну кампанію, можна тримати один шаблон, який сам підставляє потрібний заголовок, зображення й оффер залежно від UTM-мітки або регіону користувача. Розбираємо, як зробити це на WordPress з Elementor — без сторонніх сервісів.

Динамічна підміна контенту в Elementor
Ідея проста: скрипт читає UTM-параметри з адреси (наприклад, ?offer=sale&city=lviv) і підставляє відповідний текст прямо у віджети Elementor через шорткод. Ось базовий шорткод для заголовка — додайте його у functions.php дочірньої теми:
// Шорткод динамічного заголовка під UTM-параметр 'offer'
function sw_dynamic_headline_shortcode() {
// Читаємо параметр 'offer' з URL і санітизуємо його
$offer = isset( $_GET['offer'] ) ? sanitize_text_field( wp_unslash( $_GET['offer'] ) ) : 'default';
switch ( $offer ) {
case 'sale':
return 'Знижки до 40% — лише цього тижня';
case 'webinar':
return 'Безкоштовний вебінар: реєструйтеся зараз';
case 'b2b':
return 'Рішення для бізнесу: індивідуальні умови';
default:
return 'Ласкаво просимо — оберіть свою пропозицію';
}
}
add_shortcode( 'sw_headline', 'sw_dynamic_headline_shortcode' );Санітизація через sanitize_text_field() і wp_unslash() обов’язкова — параметр приходить від користувача, і без очищення це відкрита діра для XSS.
Покрокове впровадження на сторінці
Інтеграція шорткоду у фронтенд Elementor займає кілька хвилин:
- Крок 1. Відкрийте шаблон лендінга в Elementor.
- Крок 2. У віджеті «Заголовок» замість статичного тексту вставте
[sw_headline](або використайте динамічний тег, якщо у вас Elementor Pro). - Крок 3. Налаштуйте посилання в кампаніях так, щоб вони передавали потрібні UTM-параметри на лендінг.
- Крок 4. За тією ж логікою додайте шорткоди для підзаголовка, зображення чи CTA — одна сторінка покриє всі сегменти.
Кеш і підводні камені
Головна пастка динамічного контенту — кешування. Агресивний page cache (WP Rocket, LiteSpeed у режимі повного кешу) віддасть усім користувачам першу згенеровану версію сторінки, і підміна перестане працювати.
Що робити: додайте сторінки з UTM-мітками у винятки кешування (більшість плагінів уміють ігнорувати URL із query-параметрами), або покладайтеся на кеш об’єктів (Redis/Memcached) замість повного кешу сторінки. Так динаміка залишиться живою, а решта сайту — швидкою.
Коли це доречно
Динамічні лендінги — потужний інструмент для персоналізації: адаптувати меседж під місто, мову, тип клієнта чи рекламну кампанію цілком у межах правил. Важливо тримати одне: користувач і система модерації реклами мають бачити той самий контент. Підміна за джерелом трафіку — це персоналізація; показ різних сторінок рев’юеру та реальному відвідувачу — це вже клоакінг, який порушує політики Google і Meta та веде до блокування акаунтів. Будуйте динаміку так, щоб вона працювала на користувача, а не обходила перевірку.
Часті питання
Ні. Базовий підхід через шорткод у functions.php працює і на безкоштовному Elementor. Pro лише додає зручні динамічні теги, які дозволяють обійтися без ручного вставляння шорткодів.
У 9 з 10 випадків винне кешування: page cache віддає збережену версію сторінки. Додайте URL із UTM-параметрами у винятки кешу або використайте кеш об’єктів (Redis/Memcached).
Так, якщо санітизувати вхідні дані. Завжди пропускайте $_GET через sanitize_text_field() і wp_unslash() та обмежуйте логіку білим списком значень (як у switch), щоб уникнути XSS.
Потрібен динамічний лендінг під ключ?
Команда SEOWORK проєктує й підтримує WordPress-сайти з динамічним контентом, коректним кешуванням і чистим кодом. Розкажіть про задачу — повернемось із рішенням.