Любой разработчик WordPress сталкивается с необходимостью отследить и проанализировать ошибки, возникающие на сайте. Без детального отчета по ошибкам сложно быстро выявить причины сбоев и исправить их. В этой статье мы подробно разберем, как создать эффективный отчет по ошибкам в WordPress, используя встроенные возможности, плагины и собственный код.
Почему важен подробный отчет по ошибкам в WordPress
Ошибки могут быть разного типа: PHP-исключения, проблемы с базой данных, сбои плагинов или темы, ошибки JavaScript и пр. Многие из них не видны посетителям или владельцам сайта, но замедляют работу сайта или приводят к потерям функционала.
Стандартный режим отладки WordPress (WP_DEBUG) выводит ошибки на экран или в файл, но без структурированного подхода трудно контролировать объем информации и получать удобные отчеты. Подробный отчет помогает:
- Собрать все ошибки в одном месте с контекстом и метаинформацией.
- Автоматически уведомлять разработчиков или администраторов сайта.
- Проанализировать частые и критичные ошибки, чтобы приоритизировать исправления.
- Обеспечить прозрачность работы сайта для команды поддержки.
Использование плагинов для сбора и анализа ошибок
Плагин WP Debugging
WP Debugging — популярный плагин, который облегчает включение режима отладки и логирование ошибок в отдельный файл. Он также поддерживает расширенные настройки для фильтрации и интеграции с другими инструментами.
Установка и базовая настройка:
1. Установите плагин через админку WordPress или скачайте с <a href="https://wpshop.ru/plugin/wp-debugging/?utm_source=wppartner.ru&utm_medium=article&utm_campaign=kak-sozdat-podrobnyj-otchet-po-oshibkam-v-wordpress">https://wpshop.ru/plugin/wp-debugging/</a>
2. Активируйте плагин
3. В файле wp-config.php добавьте или проверьте наличие:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);Плагин создаст файл debug.log в папке wp-content, куда будут записываться все ошибки. Однако для детального отчета этого недостаточно.
Плагин Error Log Monitor
Для удобного мониторинга ошибок можно использовать плагин Error Log Monitor. Он выводит количество и последние записи ошибок прямо в админ-бар.
Такое решение позволяет быстро отследить появление новых ошибок без постоянного просмотра логов.
Создание собственного отчета по ошибкам с помощью кода
Логирование ошибок PHP в отдельный файл с дополнительной информацией
Стандартный debug.log содержит только сообщения об ошибках, но не всегда понятно, в каком контексте они возникли. Мы можем создать собственную функцию для логирования с расширенной информацией:
function wppartner_log_error( $error_message ) {
$log_file = WP_CONTENT_DIR . '/wppartner-error-report.log';
$time = date('Y-m-d H:i:s');
$current_user = wp_get_current_user();
$user_info = $current_user->ID ? 'UserID: ' . $current_user->ID . ', Login: ' . $current_user->user_login : 'Guest';
$request_uri = $_SERVER['REQUEST_URI'] ?? 'N/A';
$log_entry = "[{$time}] {$user_info} Request: {$request_uri} Error: {$error_message}\n";
error_log( $log_entry, 3, $log_file );
}
// Пример использования
set_error_handler(function($errno, $errstr, $errfile, $errline) {
wppartner_log_error("Error #{$errno}: {$errstr} in {$errfile} on line {$errline}");
return false; // Стандартная обработка
});Этот код создает файл wppartner-error-report.log в папке wp-content и записывает туда ошибки с информацией о текущем пользователе и запрошенном URL. Это помогает понять, в каком контексте произошла ошибка.
Логирование ошибок AJAX-запросов
Ошибка может возникнуть в AJAX-запросе и не попадать в стандартные логи. Чтобы отследить такие ситуации, добавим обработчик ошибок в AJAX:
add_action('wp_ajax_wppartner_capture_error', 'wppartner_capture_ajax_error');
add_action('wp_ajax_nopriv_wppartner_capture_error', 'wppartner_capture_ajax_error');
function wppartner_capture_ajax_error() {
$error_message = sanitize_text_field($_POST['error_message'] ?? '');
if ( $error_message ) {
wppartner_log_error('AJAX error: ' . $error_message);
}
wp_send_json_success();
}Этот код позволяет с фронтенда отправлять сообщения об ошибках на сервер и записывать их в лог. Для отправки ошибок с клиента можно использовать JavaScript:
function wppartnerReportAjaxError(errorMessage) {
jQuery.post(ajaxurl, {
action: 'wppartner_capture_error',
error_message: errorMessage
});
}
// Пример вызова при ошибке
window.onerror = function(message, source, lineno, colno, error) {
wppartnerReportAjaxError(message + ' at ' + source + ':' + lineno + ':' + colno);
};Анализ и визуализация отчета
Генерация HTML-отчета из логов
Для удобного просмотра логов можно создать страницу в админке, которая будет парсить лог и выводить ошибки в табличном виде с фильтрами по дате и типу ошибок.
Пример простого шорткода для отображения последних 50 записей из файла лога:
function wppartner_display_error_report() {
$log_file = WP_CONTENT_DIR . '/wppartner-error-report.log';
if ( ! file_exists($log_file) ) {
return '<p>Файл лога не найден.</p>';
}
$lines = file($log_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$lines = array_slice($lines, -50);
$html = '<table border="1" cellpadding="5" cellspacing="0"><thead><tr><th>Дата и время</th><th>Информация</th></tr></thead><tbody>';
foreach ($lines as $line) {
$parts = explode(' Error: ', $line, 2);
$html .= '<tr><td>' . esc_html($parts[0]) . '</td><td>' . esc_html($parts[1] ?? '') . '</td></tr>';
}
$html .= '</tbody></table>';
return $html;
}
add_shortcode('wppartner_error_report', 'wppartner_display_error_report');Добавьте шорткод [wppartner_error_report] на любую страницу или в админку для быстрого просмотра ошибок.
Интеграция с сервисами мониторинга
Для комплексного мониторинга стоит рассмотреть интеграцию с внешними сервисами, такими как Sentry, Rollbar или New Relic. Многие из них имеют плагины для WordPress, которые упрощают настройку.
Например, интеграция с Sentry поможет автоматически отслеживать ошибки PHP и JavaScript, получать уведомления и анализировать причины.
Рекомендации по улучшению отчетности и безопасности
При сборе ошибок важно соблюдать безопасность и не раскрывать лишней информации посетителям сайта. Убедитесь, что логи защищены от публичного доступа, а режим WP_DEBUG_DISPLAY отключен на продакшене.
Также рекомендуется регулярно очищать логи, чтобы они не занимали слишком много места и не замедляли работу сайта.
Для автоматизации очистки можно добавить CRON-задачу или использовать плагин Clearfy Pro, который помогает управлять оптимизацией сайта, включая работу с логами. Подробнее на https://wpshop.ru/plugin/clearfy-pro/.
Выводы и практические советы
Создание подробного отчета по ошибкам — задача, которая требует комплексного подхода: использование стандартных возможностей WordPress, расширение их с помощью собственного кода и плагинов, а также интеграция с внешними сервисами.
Регулярный анализ собранных данных поможет быстро реагировать на проблемы и улучшать качество сайта. Начните с простого логирования ошибок с расширенной информацией, постепенно усложняя систему по мере необходимости.