Как создать popup с загрузкой по требованию в WordPress

Что такое popup с загрузкой по требованию и зачем он нужен

Popup с загрузкой по требованию (lazy load popup) — это всплывающее окно, которое не загружается сразу при загрузке страницы, а подгружается динамически только тогда, когда пользователь инициирует его появление, например, по клику или другому событию. Такой подход значительно улучшает производительность сайта, снижая нагрузку на страницу и ускоряя время первичной загрузки.

Вместо того чтобы сразу загружать весь HTML, CSS и JavaScript для popup, мы подгружаем необходимые ресурсы и контент только тогда, когда это действительно нужно. Это особенно важно для сайтов с большим количеством popup, мультимедийным содержимым или на слабых устройствах.

Кроме того, загрузка по требованию позволяет создавать более гибкие сценарии отображения popup, например, показывать разные окна в зависимости от действий пользователя или контекста.

Как реализовать popup с загрузкой контента по требованию в WordPress

Рассмотрим практическую реализацию такого popup с использованием AJAX и стандартизированных средств WordPress. Мы создадим кнопку, по нажатию на которую будет динамически подгружаться содержимое popup и показываться окно.

Шаг 1. Создаем обработчик AJAX на стороне сервера

Для начала нужно зарегистрировать AJAX-обработчик, который будет возвращать HTML контент popup. Добавьте следующий код в functions.php вашей темы или в файл плагина:

function wppopup_get_popup_content() {
    // Проверка прав или nonce, если необходимо

    $popup_content = '<div class="wppopup-content"><h2>Динамический popup</h2><p>Этот контент загружается по требованию через AJAX.</p></div>';

    wp_send_json_success(array('html' => $popup_content));
}
add_action('wp_ajax_wppopup_get_popup_content', 'wppopup_get_popup_content');
add_action('wp_ajax_nopriv_wppopup_get_popup_content', 'wppopup_get_popup_content');

Здесь мы выводим простой HTML, но по аналогии можно подгружать любые данные, формировать контент из базы, или интегрироваться с плагинами.

Шаг 2. Добавляем кнопку и контейнер для popup в шаблон

В нужном месте темы, например, в footer.php или в файле шаблона, вставьте:

<button id="wppopup-open">Показать popup</button>
<div id="wppopup-container" style="display:none;"></div>

Контейнер wppopup-container будет использоваться для вывода содержимого popup.

Шаг 3. Добавляем JavaScript для загрузки и отображения popup

Подключите следующий скрипт, например, через wp_enqueue_script, но для примера добавим прямо в footer:

<script>
document.getElementById('wppopup-open').addEventListener('click', function() {
    var container = document.getElementById('wppopup-container');
    if(container.innerHTML.trim() === '') {
        // Загружаем контент через AJAX
        fetch('<?php echo admin_url('admin-ajax.php?action=wppopup_get_popup_content'); ?>')
        .then(response => response.json())
        .then(data => {
            if(data.success) {
                container.innerHTML = data.data.html;
                container.style.display = 'block';
                wppopupInitClose(container);
            }
        });
    } else {
        container.style.display = 'block';
    }
});

function wppopupInitClose(container) {
    // Добавим возможность закрыть popup по клику вне контента
    container.addEventListener('click', function(e) {
        if(e.target === container) {
            container.style.display = 'none';
        }
    });
}
</script>

Этот скрипт при первом клике на кнопку загрузит содержимое popup, вставит его в контейнер и покажет окно. При повторных кликах — просто откроет уже загруженный контент без повторного запроса.

Использование плагинов для создания popup с загрузкой по требованию

Если вы предпочитаете готовые решения, некоторые плагины поддерживают динамическую загрузку контента:

  • My Popup — плагин с поддержкой AJAX-загрузки и гибкой настройкой условий показа. Подробнее: https://wpshop.ru/product/my-popup/
  • Expert Review — можно использовать для показа отзывов в popup с динамической подгрузкой.

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

Преимущества и подводные камни загрузки popup по требованию

Преимущества

  • Ускорение времени загрузки страницы за счет отложенной загрузки ресурсов.
  • Снижение нагрузки на сервер и клиент.
  • Гибкость в показе разных popup в зависимости от действий пользователя.
  • Улучшение пользовательского опыта за счет плавного и своевременного отображения контента.

Возможные сложности

  • Необходимо обрабатывать ошибки AJAX-запросов и показывать запасной контент.
  • В некоторых случаях SEO может пострадать, если важный контент загружается только через AJAX.
  • Нужно учитывать кэширование и совместимость с плагинами безопасности.

Расширение функционала: динамические popup на основе данных пользователя

Можно расширить пример, чтобы подгружать разные popup в зависимости от роли пользователя, страницы или других параметров. Для этого в AJAX-обработчике используйте условные конструкции:

function wppopup_get_popup_content() {
    if(current_user_can('administrator')) {
        $popup_content = '<h2>Привет, администратор!</h2>';
    } else {
        $popup_content = '<h2>Добро пожаловать на сайт!</h2>';
    }
    wp_send_json_success(array('html' => $popup_content));
}

Такой подход позволяет делать popup максимально релевантными и персонализированными.

Выводы и рекомендации по созданию popup с загрузкой по требованию

Реализация popup с динамической загрузкой контента в WordPress — мощный инструмент для оптимизации UX и производительности. Использование AJAX и правильное построение логики показа помогает избежать лишней нагрузки и сделать интерфейс более отзывчивым.

Рекомендуется тестировать работу popup на разных устройствах и браузерах, а также учитывать возможные конфликты с другими плагинами. При необходимости можно использовать готовые решения из WPShop с поддержкой AJAX и расширенными настройками.

Как создать popup с автоматическим отключением при низкой производительности сайта в WordPress
23.04.2026
Как добавить поддержку reCAPTCHA в popup WordPress для защиты от спама
19.04.2026
Как создать popup с отключением по часовому поясу в WordPress
05.04.2026
Как разбить сложный popup на несколько шагов в WordPress
29.01.2026
Оптимизация кода WordPress для ускорения загрузки сайта
26.11.2025