Сценарий типичный: квиз открывается, первый вопрос работает, но при нажатии «Далее» ничего не происходит, кнопка крутится, а иногда шаг меняется только после перезагрузки страницы. В WordPress это почти всегда не одна причина, а связка из JavaScript-конфликта, кэша, оптимизации скриптов или ошибки в разметке формы.
Если квиз нужен как рабочий инструмент для лидов, а не как декоративный блок, проблему лучше разбирать по слоям: сначала понять, где именно ломается переход, потом проверить плагин квиза, тему и оптимизацию фронтенда.
Что обычно ломает переход между вопросами
У квизов в WordPress есть несколько уязвимых мест. Сам переход между шагами чаще всего завязан на JavaScript, AJAX или обработку состояния формы в браузере. Если один из скриптов не загрузился, был отложен не вовремя или получил ошибку, пользователь видит зависание без понятного сообщения.
Типовые причины
- конфликт JavaScript с темой или другим плагином;
- агрессивная оптимизация:
defer,delay, объединение и минификация; - ошибка в консоли браузера из-за стороннего скрипта;
- битый кэш страницы или кэш объекта;
- неверная разметка шага квиза после ручной правки шаблона;
- блокировка AJAX-запроса на уровне безопасности, CDN или WAF.
Если квиз сделан через специализированный плагин, например Quizle, логика обычно проще: сначала проверяем, что сам плагин и его скрипты работают без вмешательства оптимизаторов, а уже потом возвращаем ускорение страницы по одному параметру.
Диагностика: где именно ломается квиз
Не начинайте с отключения всего подряд. Сначала посмотрите, что происходит в браузере и в сети. Это экономит время и позволяет не сломать рабочие части сайта.
Проверка в консоли браузера
Откройте страницу с квизом, нажмите F12 и перейдите в Console. Если при клике на кнопку «Далее» появляется ошибка, она часто укажет на конкретный скрипт или плагин. Ищите сообщения вида Uncaught TypeError, Cannot read properties of undefined, $ is not defined, jQuery is not defined.
Если ошибка появляется только на странице квиза, а на других страницах сайта всё тихо, это хороший признак: проблема локальная, а не системная.
Проверка сетевых запросов
Во вкладке Network нажмите кнопку перехода между вопросами и посмотрите, уходит ли AJAX-запрос и какой у него ответ. Если запрос возвращает 403, 500 или вообще не уходит, ищите блокировку на стороне сервера, security-плагина или кэша.
Если запрос уходит, но ответ пустой или с HTML-ошибкой вместо JSON, значит, ломается серверная часть: PHP warning, fatal error или вмешательство другого плагина.
Что проверить в первую очередь
- открывается ли квиз в режиме инкогнито без автозаполнения и расширений;
- есть ли ошибки в Console;
- проходит ли AJAX-запрос в Network;
- не включена ли оптимизация скриптов на странице квиза;
- не менялась ли тема или шаблон страницы недавно;
- не стоит ли кэш страницы на уровне плагина, сервера или CDN.
Пошаговое решение без лишнего риска
Ниже порядок, который обычно помогает быстрее всего. Он рассчитан на ситуацию, когда квиз уже установлен и нужно вернуть нормальную работу без полной переделки.
1. Временно отключите оптимизацию JavaScript для страницы квиза
Если у вас включены объединение, отложенная загрузка или задержка скриптов, начните с исключения страницы квиза из этих правил. Часто именно это ломает переход между шагами: скрипт инициализации квиза запускается позже, чем пользователь успевает нажать кнопку.
Проверьте настройки кэширующего или оптимизирующего плагина и добавьте в исключения:
- скрипты самого плагина квиза;
- jQuery, если квиз на нём завязан;
- страницу, где встроен квиз;
- inline-скрипты инициализации, если плагин их использует.
Если после этого квиз начинает работать, возвращайте оптимизацию по одному пункту, чтобы найти конкретный конфликт.
2. Проверьте конфликт с темой и сторонними плагинами
Самый надёжный способ — временно переключиться на стандартную тему и оставить только плагин квиза. Если переходы начинают работать, значит, проблема в теме или в одном из дополнительных плагинов.
Если переключать тему на боевом сайте нельзя, используйте staging-копию. На ней отключайте плагины по одному: сначала всё, что связано с кэшем, безопасностью и оптимизацией, потом визуальные конструкторы, затем маркетинговые интеграции.
3. Убедитесь, что скрипты подключаются правильно
Если вы добавляли квиз вручную через шаблон или shortcode, проверьте, что скрипты и стили подключаются через wp_enqueue_script() и wp_enqueue_style(), а не вставлены напрямую в шаблон без зависимости от WordPress.
Пример корректного подключения в теме или мини-плагине:
<?php
add_action('wp_enqueue_scripts', function () {
wp_enqueue_script(
'my-quiz',
get_stylesheet_directory_uri() . '/assets/js/my-quiz.js',
array('jquery'),
'1.0.0',
true
);
wp_localize_script('my-quiz', 'MyQuizData', array(
'ajaxUrl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('my_quiz_nonce'),
));
});Если скрипт зависит от jQuery, не подключайте его как независимый модуль без проверки. Многие зависания квизов начинаются именно с того, что код ожидает $, а на странице его уже нет.
4. Проверьте серверный ответ на AJAX
Если квиз отправляет данные на сервер, обработчик должен возвращать предсказуемый JSON. Любой echo до wp_send_json_success() или PHP warning сломает формат ответа.
Пример простого обработчика:
<?php
add_action('wp_ajax_my_quiz_step', 'my_quiz_step_handler');
add_action('wp_ajax_nopriv_my_quiz_step', 'my_quiz_step_handler');
function my_quiz_step_handler() {
check_ajax_referer('my_quiz_nonce', 'nonce');
$step = isset($_POST['step']) ? absint($_POST['step']) : 0;
if ($step < 1) {
wp_send_json_error(array('message' => 'Некорректный шаг'));
}
wp_send_json_success(array(
'nextStep' => $step + 1,
));
}Если в ответе вместо JSON приходит HTML с сообщением об ошибке, откройте wp-config.php и временно включите логирование, а не вывод ошибок на экран:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);После этого проверьте wp-content/debug.log. Там обычно видно, какой плагин или файл ломает ответ.
Если квиз встроен через плагин: что смотреть в настройках
У плагинов квизов часто есть отдельные опции для анимации, автоперехода, валидации и загрузки ресурсов. Именно там можно найти причину зависания, даже если сам плагин исправен.
| Подход | Что даёт | Компромисс |
|---|---|---|
| Отключить оптимизацию скриптов | Быстро подтверждает конфликт | Страница может стать тяжелее |
| Исключить только скрипты квиза | Сохраняет ускорение сайта | Нужно точно знать имена файлов |
| Переписать логику через код | Полный контроль над поведением | Дольше внедрять и тестировать |
Если вы используете Quizle или похожий плагин, проверьте, не включены ли одновременно автопереход и жесткая валидация обязательных полей. Иногда пользователь нажимает «Далее», но форма молча не пропускает шаг из-за пустого поля, которое визуально не подсвечено.
Проверка результата после исправления
Когда внесли изменения, не ограничивайтесь одним ручным кликом. Нужно убедиться, что квиз работает в тех условиях, где раньше ломался.
Мини-чек-лист проверки
- квиз открывается в обычном окне и в инкогнито;
- кнопка «Далее» меняет шаг без перезагрузки;
- ошибок в Console нет;
- AJAX-запрос получает
200и валидный JSON; - данные из квиза доходят до формы, CRM или почты;
- кэш страницы не возвращает старую версию скрипта;
- на мобильном переходы работают так же, как на десктопе.
Если проблема была в кэше, обязательно очистите не только страницу, но и серверный кэш, CDN и кэш браузера. Иначе можно решить, что исправление не сработало, хотя пользователь просто видит старый JS-файл.
Частые ошибки и как их исправить
Квиз работает у администратора, но ломается у гостей
Это частая история, когда у залогиненного пользователя отключён кэш или подгружается другая версия страницы. Проверяйте квиз в режиме гостя, а не только из админки.
После минификации всё перестало переключаться
Значит, оптимизатор изменил порядок загрузки или склеил скрипты так, что зависимость от jQuery или inline-инициализации нарушилась. Добавьте скрипт квиза в исключения и не минифицируйте его вместе с остальными.
AJAX отвечает 403
Обычно это nonce, security-плагин или WAF. Проверьте, не истёк ли nonce, и не блокирует ли запрос правило в Wordfence, Cloudflare или другом фильтре. Если квиз нужен для внешних посетителей, обработчик должен быть доступен через wp_ajax_nopriv_....
Шаг меняется, но данные не сохраняются
Тогда проблема уже не в интерфейсе, а в серверной обработке. Смотрите, не обрезаются ли поля, не меняются ли имена input после кастомизации и не падает ли отправка на последнем шаге.
Что сделать для стабильности и скорости
Квиз — это интерактивный блок, и он чувствителен к лишнему JavaScript. Если страница уже тяжёлая, не добавляйте туда ещё и десяток маркетинговых виджетов без необходимости. Чем меньше конфликтов на фронтенде, тем проще поддерживать квиз.
- подключайте скрипты только на страницах, где реально есть квиз;
- не грузите один и тот же JS дважды через тему и плагин;
- проверяйте совместимость с кэшем после каждого обновления плагина;
- если квиз собирает лиды, логируйте ошибки отправки;
- не редактируйте плагин напрямую — лучше вынести доработки в дочернюю тему или мини-плагин.
Если нужен не просто квиз, а связка квиза с контентом, формами и блоками доверия, имеет смысл смотреть на решения, где это уже собрано в одном стеке. Например, для WordPress-проектов с квизами и блоками вовлечения удобно использовать специализированные инструменты вроде Quizle или дополнять их блоками доверия и FAQ через Expert Review, если это действительно помогает сценарию страницы.
Главная проверка простая: если квиз стабильно проходит все шаги без ошибок в консоли, без 4xx/5xx в сети и без зависимости от режима администратора, значит, вы нашли не временный обход, а рабочее исправление.