My Popup не показывается в кэшированном сайте: как найти конфликт и исправить

Это не универсальный хук WordPress, а пример того, как обычно проверяют наличие скрипта на странице перед настройкой исключений.

<?php
add_action( 'wp_enqueue_scripts', function() {
    if ( is_admin() ) {
        return;
    }

    // Проверяем, подключён ли скрипт попапа на фронтенде.
    // Замените handle на реальный, если он известен из исходника.
    if ( wp_script_is( 'my-popup', 'enqueued' ) ) {
        error_log( 'My Popup script is enqueued' );
    }
}, 20 );

Если handle неизвестен, используйте инспектор браузера и найдите название файла в теге <script src="...">. Это надёжнее, чем гадать по названию плагина.

Шаг 4. Проверьте cookie и условия повторного показа

Частая ошибка — попап технически работает, но не показывается из-за уже установленной cookie. Для теста очистите cookie домена или откройте сайт в новом профиле браузера. Если окно появилось, значит проблема не в кэше, а в логике повторного показа.

Если вы настраивали скрытие после закрытия, проверьте срок жизни cookie и условие, при котором она ставится. Слишком длинный срок делает отладку неудобной: вы уже забыли, что закрывали окно вчера, а плагин честно его не показывает.

Шаг 5. Зафиксируйте рабочую конфигурацию

Когда попап начинает работать, не возвращайте оптимизацию «как было» вслепую. Включайте настройки по одной и после каждого шага проверяйте страницу. Так вы поймёте, какой именно параметр ломает показ.

ПодходЧто даётКомпромисс
Отключить оптимизацию целикомБыстро находит причинуПадает производительность на время теста
Добавить исключение для скриптаСохраняет кэш и ускорениеНужно точно знать файл/handle
Править код инициализацииГибко для сложных сценариевТребует аккуратной проверки после обновлений

Пример проверки через JavaScript

Если нужно понять, вызывается ли инициализация вообще, можно временно добавить безопасный лог в консоль. Это не решение само по себе, но хороший способ отловить момент, когда скрипт не доходит до выполнения.

<script>
document.addEventListener('DOMContentLoaded', function () {
    console.log('DOM ready');

    // Замените на реальный глобальный объект или событие, если оно есть в My Popup.
    if (window.MyPopup) {
        console.log('My Popup object found', window.MyPopup);
    } else {
        console.warn('My Popup object not found');
    }
});
</script>

Если в консоли нет объекта плагина, значит либо скрипт не загрузился, либо был отложен/удалён оптимизатором. Если объект есть, но окно не открывается, ищите проблему в триггере или cookie.

Чек-лист перед публикацией исправления

  • попап отображается в обычном окне и в инкогнито;
  • скрипт My Popup не попадает под delay/defer без исключения;
  • в консоли нет ошибок JavaScript;
  • cookie закрытия очищается и не блокирует повторный тест;
  • кэш страницы очищен после изменения настроек;
  • на мобильных устройствах окно не перекрывает критический контент;
  • если используется CDN, обновлён и его кэш.

Частые ошибки и как их исправить

Ошибка: попап работает только после очистки кэша

Причина обычно в том, что страница закэширована с уже устаревшей разметкой или скрипт меняется, а CDN продолжает отдавать старую версию. Решение — сбросить кэш страницы, кэш плагина и кэш CDN, а затем проверить, не включено ли агрессивное объединение JS.

Ошибка: окно не открывается после включения минификации

Минификатор мог изменить порядок загрузки или сломать inline-инициализацию. Добавьте файл My Popup в исключения, а если проблема в inline-скрипте — отключите объединение именно для него.

Ошибка: попап закрывается один раз и больше не появляется

Это не баг, а следствие cookie или localStorage. Сократите срок действия cookie для тестов и проверьте, не стоит ли условие «не показывать после закрытия» на слишком долгий период.

Ошибка: на одной странице попап есть, на другой нет

Здесь часто виноваты условия отображения, шаблон страницы или исключения по типу контента. Проверьте, не ограничен ли показ только главной, архивами или конкретными шаблонами.

Что делать, если нужен стабильный показ без ручной отладки

Если на сайте постоянно меняются плагины оптимизации, а попапы используются как часть маркетинга или уведомлений, лучше держать конфигурацию максимально простой: один кэширующий плагин, понятные исключения для JS и минимум сторонних скриптов в зоне показа. В таких сценариях My Popup удобен именно тем, что его можно быстро проверить, отключить и вернуть без переписывания темы.

Если вы уже используете инструменты для технической чистки и SEO-оптимизации, например Clearfy Pro, имеет смысл отдельно проверить, не включены ли там функции, которые меняют поведение скриптов или убирают лишние ресурсы со страницы. Это не значит, что плагин мешает сам по себе; важно только не складывать несколько оптимизаций в одну точку без теста.

Как проверить, что решение сработало

После правок не ограничивайтесь одним открытием страницы. Проверьте сценарий целиком:

  • откройте страницу в обычном окне;
  • откройте ту же страницу в инкогнито;
  • очистите cookie домена и повторите тест;
  • проверьте мобильную версию;
  • посмотрите консоль браузера на наличие ошибок;
  • сравните поведение до и после очистки кэша плагина и CDN.

Если попап стабильно открывается в этих сценариях и не ломает загрузку страницы, значит конфликт устранён. Если нет — возвращайтесь к диагностике и проверяйте следующий слой: сначала JS, потом cookie, потом условия показа, и только после этого сам плагин.

Как найти и убрать дубли страниц в WordPress после смены структуры URL
17.08.2026
Как создать собственный шорткод для popup в WordPress
03.12.2025
Как удалить popup из WooCommerce после успешного заказа в WordPress
26.04.2026
Как сделать popup по активности пользователя в WordPress
05.01.2026
Как удалить popup после отправки формы в WooCommerce без перезагрузки страницы
01.06.2026