WP Error Log: как анализировать и искать решения ошибок в WordPress

Каждый разработчик 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.

Наш каталог плагинов WordPress