Розробка · WordPress · 10 березня 2026

Автоматизація лендінгів на WordPress: динамічний контент під UTM і гео

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

WordPress·5 хв читання
Автоматизація лендінгів WordPress — динамічний контент під UTM і гео

Динамічна підміна контенту в 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-сайти з динамічним контентом, коректним кешуванням і чистим кодом. Розкажіть про задачу — повернемось із рішенням.

Поділитися статтею




Розбори кіберзагроз від SEOWORK

Одна практична стаття на тиждень — як не купитися на фішинг, захистити акаунти й дані. У подарунок одразу памʼятка у PDF.