Как создать автоматический отчет о проблемах WordPress

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

Почему важен автоматический отчет о проблемах WordPress

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

Автоматический отчет помогает своевременно выявлять и устранять проблемы, а также экономит время, позволяя сосредоточиться на развитии сайта.

Основные показатели для автоматического отчета

Для эффективного мониторинга стоит включить следующие параметры:

  • Версия WordPress и активных плагинов
  • Проверка наличия обновлений
  • Активность и статус важных плагинов
  • Статус подключения к базе данных
  • Размер базы данных и таблиц
  • Ошибки в логах PHP (если доступно)
  • Проверка свободного дискового пространства
  • Проверка скорости загрузки главной страницы (простейший тест)

Эти данные помогут оперативно понять, есть ли сбои или угрозы стабильности.

Создаем функцию для сбора данных отчета

Для начала напишем функцию, которая соберет нужные данные и сформирует текст отчета. Назовем ее wpassist_get_status_report(). В ней мы воспользуемся стандартными функциями WordPress и PHP.

function wpassist_get_status_report() {
    global $wpdb;
    $report = [];

    // Версия WordPress
    $report[] = 'Версия WordPress: ' . get_bloginfo('version');

    // Активные плагины и их версии
    if (!function_exists('get_plugins')) {
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }
    $plugins = get_plugins();
    $active_plugins = get_option('active_plugins');
    $report[] = "\nАктивные плагины:";
    foreach ($active_plugins as $plugin_path) {
        if (isset($plugins[$plugin_path])) {
            $plugin_data = $plugins[$plugin_path];
            $report[] = $plugin_data['Name'] . ' - версия ' . $plugin_data['Version'];
        }
    }

    // Проверка подключения к базе данных
    $db_status = $wpdb->check_connection() ? 'OK' : 'Ошибка подключения';
    $report[] = "\nСтатус подключения к базе данных: " . $db_status;

    // Размер базы данных (все таблицы WP)
    $tables = $wpdb->get_results("SHOW TABLE STATUS LIKE '{$wpdb->prefix}%'");
    $db_size = 0;
    foreach ($tables as $table) {
        $db_size += $table->Data_length + $table->Index_length;
    }
    $db_size_mb = round($db_size / 1048576, 2);
    $report[] = "Размер базы данных: {$db_size_mb} МБ";

    // Проверка свободного места на диске
    $free_space = disk_free_space(ABSPATH);
    $free_space_mb = round($free_space / 1048576, 2);
    $report[] = "Свободное место на диске: {$free_space_mb} МБ";

    // Проверка времени загрузки главной страницы
    $start = microtime(true);
    wp_remote_get(home_url());
    $load_time = round(microtime(true) - $start, 2);
    $report[] = "Время загрузки главной страницы: {$load_time} секунд";

    return implode("\n", $report);
}

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

Настраиваем WP-Cron для регулярной отправки отчета

Чтобы отчет генерировался и отправлялся автоматически, используем WP-Cron. Для этого добавим событие и зададим интервал.

function wpassist_schedule_reports() {
    if (!wp_next_scheduled('wpassist_send_status_report')) {
        wp_schedule_event(time(), 'daily', 'wpassist_send_status_report');
    }
}
add_action('wp', 'wpassist_schedule_reports');

function wpassist_send_status_report() {
    $to = get_option('admin_email');
    $subject = 'Автоматический отчет о состоянии сайта WordPress';
    $message = wpassist_get_status_report();
    wp_mail($to, $subject, $message);
}
add_action('wpassist_send_status_report', 'wpassist_send_status_report');

В этом коде мы создаем ежедневное событие, которое вызовет функцию отправки письма с отчетом на email администратора.

Дополнительные советы и расширения

1. Логирование ошибок PHP: можно дополнительно добавить парсинг файлов логов, если сервер их записывает, и включить эти данные в отчет.

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

3. Настройка расписания: интервал можно изменить с 'daily' на любой другой, например 'twicedaily' или создать свой.

Создание кастомного интервала для WP-Cron

Если нужно запускать отчет чаще, добавим собственный интервал:

function wpassist_custom_cron_intervals($schedules) {
    if (!isset($schedules['every_6_hours'])) {
        $schedules['every_6_hours'] = [
            'interval' => 21600, // 6 часов в секундах
            'display' => __('Каждые 6 часов')
        ];
    }
    return $schedules;
}
add_filter('cron_schedules', 'wpassist_custom_cron_intervals');

Затем замените 'daily' на 'every_6_hours' в wp_schedule_event.

Как проверить работу автоматического отчета

После добавления кода в functions.php вашей темы или в отдельный плагин:

  1. Очистите кэш сайта и кэш WP-Cron, если используете сторонние кеширующие плагины.
  2. Проверьте, что событие запланировано, с помощью плагина "WP Crontrol".
  3. Вызовите вручную функцию отправки для теста, например, через WP-CLI или временно добавив вызов wpassist_send_status_report(); в код.
  4. Проверьте почтовый ящик администратора.

Заключение

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

Как сделать автоматический отчет о проблемах WordPress
07.03.2026
WooCommerce: как исправить автоматическое удаление неактивных заказов, если оно не работает
24.07.2026
WooCommerce: автоматическое удаление закрытых заказов по расписанию — решение проблемы
27.06.2026
Как удалить пустые термины в таксономии WordPress с примерами кода
14.02.2026
WooCommerce: автоматическое удаление неактивных заказов по времени
10.05.2026