Отладка WordPress – поиск и исправление ошибок, сбоев и узких мест на сайте. Без неё легко получить белый экран, медленные страницы, сломанный функционал или дыры в безопасности. Ниже – рабочий набор: встроенные константы, логи, консоль браузера, Debug Bar, Query Monitor, статический анализ и Xdebug.
Коротко
- Включите
WP_DEBUGиWP_DEBUG_LOGна staging; на проде – осторожно и без вывода на экран. - Консоль браузера ловит JS/CSS и сетевые сбои.
- Debug Bar и особенно Query Monitor показывают SQL, память, хуки и загруженные скрипты.
- Для глубокого PHP – Xdebug; для качества кода – PHP_CodeSniffer / PHPCS под WordPress Coding Standards.
- Сканеры вроде WPScan помогают искать известные уязвимости, но не заменяют обновления и бэкапы.
Основные инструменты
На практике обычно комбинируют несколько уровней:
- Консоль разработчика в браузере – инспектор DOM, Console, Network, Sources. Нужна для JS-ошибок, 404 по ассетам, CORS, странных стилей.
- Плагин Debug Bar – панель в админке с запросами, памятью, временем и связанными аддонами.
- Логи WordPress – файл
wp-content/debug.log(и логи PHP/веб-сервера) с типом ошибки, файлом и строкой. - Query Monitor – детальный разбор SQL, HTTP API, хуков, скриптов, стилей, capability-проверок.
- Проверка кода – PHP_CodeSniffer, PHPMD и WPCS для стиля и типичных косяков до выкладки.
- Xdebug – breakpoints, step-by-step, просмотр переменных в IDE.
- Безопасность – WPScan, журналы аудита (например, WP Activity Log) для известных CVE и подозрительных действий.
Консоль разработчика в браузере
Открывается через ПКМ – «Просмотреть код» / «Inspect» или F12. Вкладки, которые чаще всего нужны на WP-сайте:
- Console – ошибки и предупреждения JavaScript, можно гонять
console.log(). - Elements / Inspector – DOM и computed-стили; удобно ловить конфликты CSS темы и плагинов.
- Network – статусы запросов, время, размер; видно, какой плагин тянет тяжёлый скрипт или падает REST/AJAX.
- Sources – breakpoints в JS, пошаговый разбор фронтенда.
Типичный маршрут: открыли проблемную страницу, смотрим красные ошибки в Console, параллельно фильтруем Network по XHR/Fetch и статусам 4xx/5xx. Если «плывёт» вёрстка – сравниваем классы в Elements с ожидаемыми стилями темы.
Встроенный debug и логи
Базовая среда отладки включается в wp-config.php до строки /* That's all, stop editing! */:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );
Что делает каждая константа:
WP_DEBUG– режим отладки ядра, тем и плагинов (notices, warnings, deprecated).WP_DEBUG_LOG– пишет сообщения вwp-content/debug.log.WP_DEBUG_DISPLAY– вывод на экран; на проде почти всегдаfalse, иначе посетители увидят пути и stack trace.
Смотреть лог можно так:
tail -f wp-content/debug.log # или последние строки tail -n 100 wp-content/debug.log
В записи обычно есть уровень (Notice, Warning, Fatal), файл, строка и иногда стек. «Undefined function» чаще всего значит: плагин или тема не загружены, опечатка в имени или вызов до plugins_loaded. После разбора на staging отключите debug на проде или оставьте только лог без display.
Плагин Debug Bar
Debug Bar добавляет панель отладки в админ-бар. После установки и активации появляется вкладка Debug с блоками вроде Database, Memory, Queries (набор зависит от аддонов).
Полезно для быстрой оценки: сколько SQL ушло на страницу, сколько памяти съело, есть ли медленные запросы. Для логов удобно держать включённым WP_DEBUG_LOG – тогда ошибки видны и в файле, и через связанные расширения панели.
На проде Debug Bar лучше не держать постоянно: лишняя нагрузка и риск утечки служебной информации, если кто-то получит доступ к админке. Идеальное место – локалка и staging.
Query Monitor
Query Monitor – один из самых полезных плагинов для разбора «почему сайт тормозит» и «кто дергает базу».
После активации в админ-баре появляется сводка. Типичные разделы:
- Database Queries – список SQL, время, caller (какой файл или функция вызвал запрос), дубликаты.
- Memory / Timing – пики памяти и время генерации.
- Scripts & Styles – что подключено, откуда, зависимости.
- Hooks & Actions – какие callbacks висят на хуках.
- HTTP API – исходящие запросы (часто виновники таймаутов).
- PHP Errors – notices и warnings на текущем запросе.
Практика: откройте медленную страницу, отсортируйте запросы по времени, найдите N+1 (десятки похожих SELECT) или тяжёлый meta_query без индексов. Параллельно смотрите, не тянет ли тема десять шрифтов и три jQuery-плагина на главной. Query Monitor видно только пользователям с правом view_query_monitor (по умолчанию администраторам) – всё равно не оставляйте его на проде без необходимости.
Качество кода и Xdebug
PHP_CodeSniffer с правилами WordPress Coding Standards ловит отступы, неэкранированный вывод, устаревшие функции и стиль до того, как код попадёт на сервер. PHPMD (mess detector) подсвечивает сложность, мёртвый код и слишком длинные методы.
Xdebug подключают к PHP-FPM/CLI и IDE (PhpStorm, VS Code). Ставите breakpoint, воспроизводите сценарий в браузере, смотрите стек и переменные. На проде Xdebug обычно выключен: сильно бьёт по производительности. Для профилирования отдельно смотрят trace/profiler и инструменты вроде Blackfire или Tideways, если нужна уже «боевая» метрика.
Безопасность при отладке
- Не включайте
WP_DEBUG_DISPLAYна боевом сайте. - Закройте
debug.logот веб-доступа (права, deny в nginx/apache, или перенос лога вне document root черезini_set('error_log', ...)). - WPScan и аудит-логи – дополнение к обновлениям ядра, тем и плагинов, а не замена.
- Отладочные плагины на проде – только временно и под админом.
Частые вопросы
Что такое отладка WordPress?
Поиск причин сбоев и деградации: PHP/JS ошибки, SQL, конфликт плагинов, неверная конфигурация, проблемы кэша и прав.
С чего начать, если «белый экран»?
Логи PHP и debug.log, временно WP_DEBUG на staging-копии, отключение последних плагинов или темы, проверка лимитов памяти и версии PHP.
Debug Bar или Query Monitor?
Для повседневной работы чаще хватает Query Monitor: он глубже по SQL, HTTP и ассетам. Debug Bar полезен как лёгкая панель и база для аддонов.
Можно ли отлаживать только на проде?
Технически да, но рискованно. Лучше копия сайта (staging) с теми же PHP и плагинами. На проде – точечно, с логом без display и с быстрым откатом.
Соберите минимум: WP_DEBUG_LOG на staging, консоль браузера и Query Monitor. Этого уже достаточно, чтобы закрывать большинство инцидентов без гадания. Xdebug и статический анализ подключайте, когда правите собственный код темы или плагина.