Каждый разработчик WordPress рано или поздно сталкивается с ошибками на сайте, которые сложно диагностировать без логов. В этой статье расскажу, как эффективно использовать WP error log — системные логи ошибок WordPress — для быстрого поиска и устранения проблем.
Что такое WP Error Log и зачем он нужен
WP Error Log — это файл, в который WordPress записывает сообщения об ошибках PHP, предупреждения и уведомления. По умолчанию в WordPress логи ошибок не включены, поэтому многие разработчики не могут увидеть причину сбоев или багов.
Ведение error log позволяет:
- Отследить точное место возникновения ошибки;
- Понять, что вызывает проблему — плагин, тема или кастомный код;
- Профилировать производительность и выявлять узкие места;
- Быстрее решать баги без лишних догадок.
Без error log вы рискуете тратить часы на поиск причины, особенно если ошибка не отображается на экране из-за настроек display_errors в PHP.
Как включить WP Error Log через wp-config.php
Для начала необходимо активировать логирование ошибок. Это делается через правку файла wp-config.php в корне сайта.
Добавьте или измените следующие строки:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);Объяснение:
WP_DEBUG— включает режим отладки в WordPress;WP_DEBUG_LOG— включает запись ошибок в файлwp-content/debug.log;WP_DEBUG_DISPLAY— отключает вывод ошибок на экран (рекомендуется в продакшн-среде);@ini_set('display_errors', 0);— дополнительная защита, чтобы ошибки не показывались пользователям.
После этого все ошибки PHP и предупреждения, которые возникают в работе сайта, будут сохраняться в файл wp-content/debug.log. Откройте этот файл через FTP или файловый менеджер хостинга, чтобы просмотреть логи.
Как читать и анализировать wp-content/debug.log
Формат файла простой: каждая ошибка содержит дату, время, тип ошибки и сообщение. Пример строки из лога:
[26-Jun-2024 14:32:10 UTC] PHP Warning: Invalid argument supplied for foreach() in /var/www/wp-content/themes/mytheme/functions.php on line 123Здесь можно сразу понять, что проблема в теме (файл functions.php), на строке 123, и связана с передачей в foreach() неверного аргумента.
Советы по анализу:
- Обращайте внимание на путь к файлу и строку — именно там ищите ошибку в коде;
- Тип ошибки (Warning, Notice, Fatal error) подсказывает, насколько критична проблема;
- Если ошибка связана с плагином — временно отключите его и проверьте результат;
- Используйте поиск по коду (IDE или редактор) для нахождения проблемной функции или вызова.
Лучшие плагины для удобного просмотра и фильтрации ошибок
Если не хотите заходить в debug.log вручную, можно использовать плагины, которые упрощают работу с логами:
- WP Log Viewer — простой и бесплатный плагин, который выводит логи в админке, позволяет фильтровать по дате и типу ошибок.
- Query Monitor — мощный инструмент для отладки, показывает ошибки PHP, SQL-запросы, HTTP-запросы и многое другое прямо в админ-панели.
- Debug Bar — добавляет панель с информацией об ошибках и запросах, удобен для быстрого доступа к логам.
Эти плагины помогают не только видеть ошибки, но и ускоряют диагностику, экономя время.
Пример функции для wp0.ru: автоматическая проверка и очистка лога ошибок
Чтобы не перегружать сервер большим размером лога, можно написать функцию, которая будет очищать debug.log, если он превышает заданный размер. Добавьте в functions.php вашей темы следующий код:
function wp0_clear_debug_log() {
$log_file = WP_CONTENT_DIR . '/debug.log';
$max_size = 1024 * 1024 * 5; // 5 МБ
if (file_exists($log_file) && filesize($log_file) > $max_size) {
file_put_contents($log_file, ''); // Очистка файла
}
}
add_action('init', 'wp0_clear_debug_log');Эта функция проверяет размер файла лога при каждом запуске сайта и очищает его, если он больше 5 МБ. Можно настроить размер под свои нужды.
Расширенные техники: логирование пользовательских сообщений и ошибок
Иногда нужно записать в лог собственные сообщения для отладки.
Добавим функцию, которая пишет в debug.log:
function wp0_write_to_log($message) {
if (WP_DEBUG === true) {
if (is_array($message) || is_object($message)) {
error_log(print_r($message, true));
} else {
error_log($message);
}
}
}Используйте как:
wp0_write_to_log('Значение переменной: ' . $var);Это сильно помогает при отладке сложных функций и при работе с нестандартными API.
Выводы и рекомендации для работы с WP Error Log
Работа с логами ошибок — необходимый навык для любого разработчика WordPress. Правильная настройка, регулярный анализ и использование дополнительных инструментов помогут быстро находить и устранять ошибки.
Обязательно включайте логи на тестовых и продакшн-сайтах, но отключайте вывод ошибок на экран, чтобы не раскрывать внутреннюю информацию.
Используйте плагины для удобства и автоматизируйте рутинные задачи, например, очистку лога, чтобы избежать переполнения диска.
WP error log — ваш надежный помощник в поддержке и развитии качественного сайта на WordPress.