Как создать подробный отчет об ошибках WordPress с помощью плагинов и кода

Отладка и мониторинг ошибок — важнейшая часть поддержки и развития любого сайта на WordPress. Особенно когда проект растет и возникают неожиданные баги, нужно уметь быстро собирать и анализировать информацию об ошибках, чтобы оперативно их исправлять. В этой статье подробно разберем, как создать подробный отчет об ошибках WordPress, используя готовые плагины и собственные решения на PHP.

Почему стандартный WP_DEBUG не всегда достаточен

По умолчанию WordPress предлагает включить режим отладки с помощью константы WP_DEBUG в wp-config.php. Это позволяет видеть ошибки и предупреждения прямо на сайте или в логах. Однако такой подход имеет ограничения:

  • Ошибки показываются напрямую на сайте, что может негативно влиять на пользователей.
  • Логи часто переполняются и трудно быстро найти нужную информацию.
  • Отсутствует удобный интерфейс для просмотра и фильтрации ошибок.

Поэтому для серьезного мониторинга часто используют специальные плагины или пишут собственные обработчики ошибок.

Использование плагина Error Log Monitor

Один из простых и популярных плагинов — Error Log Monitor. Он автоматически отслеживает логи ошибок PHP и выводит количество новых ошибок в админ-панели.

Основные преимущества:

  • Автоматический мониторинг файлов error_log и логов PHP.
  • Уведомления в админке о новых ошибках.
  • Возможность просматривать последние записи лога прямо в панели WordPress.

Установка проста — через репозиторий WordPress. После активации плагин начинает следить за логами и выводит количество ошибок в меню «Инструменты».

Настройка уведомлений на email

Для своевременного реагирования полезно настроить уведомления на почту. Например, можно использовать плагин WPRemark для расширенной работы с уведомлениями и отзывами, адаптировав его под свои нужды.

Создание собственного обработчика ошибок с сохранением в базу данных

Если нужно более гибкое решение, можно написать собственный обработчик ошибок, который будет сохранять детальную информацию в отдельную таблицу базы данных. Это позволит формировать удобные отчеты и фильтровать ошибки по дате, типу, плагину и другим параметрам.

Создаем таблицу для хранения ошибок

function wppuzzle_create_error_log_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wppuzzle_error_log';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
      id BIGINT(20) NOT NULL AUTO_INCREMENT,
      error_type VARCHAR(50) NOT NULL,
      error_message TEXT NOT NULL,
      error_file VARCHAR(255) DEFAULT '',
      error_line INT DEFAULT 0,
      error_context TEXT,
      error_time DATETIME DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}
register_activation_hook( __FILE__, 'wppuzzle_create_error_log_table' );

Этот код создаст таблицу wp_wppuzzle_error_log с полями для типа ошибки, сообщения, файла, строки и времени.

Обработчик ошибок PHP

Далее пишем функцию, которая будет ловить ошибки, фильтровать их и сохранять в таблицу:

function wppuzzle_custom_error_handler($errno, $errstr, $errfile, $errline) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wppuzzle_error_log';

    // Фильтрация ошибок: можно исключить предупреждения или уведомления
    if (!(error_reporting() & $errno)) {
        return false; // Не обрабатывать
    }

    $wpdb->insert(
        $table_name,
        [
            'error_type' => wppuzzle_get_error_type($errno),
            'error_message' => $errstr,
            'error_file' => $errfile,
            'error_line' => $errline,
            'error_context' => '',
            'error_time' => current_time('mysql', 1),
        ]
    );

    // Можно логировать в стандартный лог
    error_log("PHP Error [$errno]: $errstr in $errfile on line $errline");

    return true; // Ошибка обработана
}

function wppuzzle_get_error_type($errno) {
    $types = [
        E_ERROR => 'Error',
        E_WARNING => 'Warning',
        E_PARSE => 'Parse Error',
        E_NOTICE => 'Notice',
        E_CORE_ERROR => 'Core Error',
        E_CORE_WARNING => 'Core Warning',
        E_COMPILE_ERROR => 'Compile Error',
        E_COMPILE_WARNING => 'Compile Warning',
        E_USER_ERROR => 'User Error',
        E_USER_WARNING => 'User Warning',
        E_USER_NOTICE => 'User Notice',
        E_STRICT => 'Strict',
        E_RECOVERABLE_ERROR => 'Recoverable Error',
        E_DEPRECATED => 'Deprecated',
        E_USER_DEPRECATED => 'User Deprecated'
    ];
    return isset($types[$errno]) ? $types[$errno] : 'Unknown';
}

set_error_handler('wppuzzle_custom_error_handler');

Этот обработчик перехватывает все ошибки, которые не подавлены, и записывает их в базу с указанием типа и контекста.

Просмотр и фильтрация отчетов об ошибках в админке

Для удобства разработчиков стоит создать страницу в админке, где можно просматривать сохраненные ошибки, фильтровать по типу и дате. Пример простого вывода:

function wppuzzle_error_log_admin_page() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wppuzzle_error_log';

    $errors = $wpdb->get_results("SELECT * FROM $table_name ORDER BY error_time DESC LIMIT 100");

    echo '<div class="wrap"><h1>Отчет об ошибках WP Puzzle</h1><table class="wp-list-table widefat fixed striped"><thead><tr><th>Время</th><th>Тип</th><th>Сообщение</th><th>Файл</th><th>Строка</th></tr></thead><tbody>";

    if ($errors) {
        foreach ($errors as $error) {
            echo "<tr>" .
                 "<td>" . esc_html($error->error_time) . "</td>" .
                 "<td>" . esc_html($error->error_type) . "</td>" .
                 "<td>" . esc_html($error->error_message) . "</td>" .
                 "<td>" . esc_html($error->error_file) . "</td>" .
                 "<td>" . esc_html($error->error_line) . "</td>" .
                 "</tr>";
        }
    } else {
        echo "<tr><td colspan='5'>Ошибок не найдено</td></tr>";
    }

    echo "</tbody></table></div>";
}

function wppuzzle_add_admin_menu() {
    add_menu_page('Отчет об ошибках WP Puzzle', 'Отчет ошибок', 'manage_options', 'wppuzzle-error-log', 'wppuzzle_error_log_admin_page', 'dashicons-warning', 80);
}
add_action('admin_menu', 'wppuzzle_add_admin_menu');

Этот код создаст новый пункт меню в админке и выведет 100 последних ошибок в табличном виде.

Использование плагина Clearfy Pro для расширенного контроля ошибок

Если вы используете плагин Clearfy Pro, он предлагает расширенные возможности для оптимизации и контроля ошибок, включая отключение лишних скриптов, управление логами и даже интеграцию с внешними сервисами мониторинга.

Clearfy позволяет отключить ненужные функции WordPress, что снижает количество ошибок, и настраивать уведомления об ошибках, что удобно для администраторов.

Рекомендации по безопасности и производительности при логировании ошибок

Ведение логов ошибок — полезная практика, но важно учитывать:

  • Не храните логи в открытом виде на сервере — используйте базы данных или защищенные файлы.
  • Очищайте старые записи, чтобы база не разрасталась и не замедляла сайт.
  • Отключайте подробный вывод ошибок на живом сайте, чтобы не раскрывать внутренние данные.
  • Используйте фильтры и уровни ошибок, чтобы фиксировать только критичные проблемы.

Хорошей практикой будет автоматизация очистки логов, например, через WP-Cron:

function wppuzzle_cleanup_error_logs() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wppuzzle_error_log';
    // Удаляем записи старше 30 дней
    $wpdb->query($wpdb->prepare("DELETE FROM $table_name WHERE error_time < %s", date('Y-m-d H:i:s', strtotime('-30 days'))));
}
add_action('wp_scheduled_cleanup', 'wppuzzle_cleanup_error_logs');

if (!wp_next_scheduled('wp_scheduled_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wp_scheduled_cleanup');
}

Вывод

Создание подробного отчета об ошибках в WordPress — задача, решаемая как с помощью готовых плагинов, так и кастомного кода. Для большинства проектов достаточен плагин Error Log Monitor, но при специфических требованиях лучше реализовать собственный механизм с сохранением в базу и удобным интерфейсом в админке. Также рекомендуем использовать Clearfy Pro для комплексной оптимизации и контроля.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
WordPress: как изменить URL опубликованной страницы без потери SEO
31.10.2025
Как полностью настроить страницу входа в WordPress: плагины и примеры кода
10.01.2026
Как создать динамические скрипты в WordPress с помощью AJAX
18.11.2025
WooCommerce: как автоматически удалять товары с нулевым остатком
11.05.2026
Как установить ограничения на регистрацию в WordPress: практические методы и код
09.04.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее