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

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

Почему важно автоматически отключать проблемные плагины

Плагины значительно расширяют возможности WordPress, но иногда они несовместимы с другими расширениями, темами или ядром CMS, особенно после обновлений. Если ошибка не устранена быстро, это приводит к простоям сайта, потере посетителей и ухудшению SEO. Ручное отключение требует доступа к админке или FTP, что не всегда удобно.

Автоматизация отключения плагинов при обнаружении критических PHP ошибок или фатальных ошибок позволяет:

  • Минимизировать время простоя сайта.
  • Сохранить доступ к админке и возможность диагностики.
  • Автоматизировать мониторинг состояния сайта.

Какие ошибки можно отслеживать для отключения плагинов

Типичные ошибки, которые вызывают сбои из-за плагинов:

  • Fatal error — критические ошибки, например, вызов несуществующих функций или конфликт классов.
  • Parse error — синтаксические ошибки в коде плагина.
  • Deprecated warnings — устаревшие функции, которые могут ломать сайт при обновлении PHP.
  • Memory limit errors — превышение лимита памяти из-за ресурсоемких плагинов.

Важно отслеживать именно фатальные и критические ошибки, которые делают сайт недоступным.

Как реализовать автоматическое отключение плагинов на PHP

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

Пример пользовательской функции для отключения плагина

function wpkit_deactivate_plugin_on_error($plugin_file) {
    if ( !function_exists('deactivate_plugins') ) {
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }
    deactivate_plugins($plugin_file);
    error_log('Plugin ' . $plugin_file . ' deactivated automatically due to error.');
}

Эта функция отключает плагин по его пути и записывает в лог.

Отслеживание критических ошибок с помощью shutdown hook

Можно использовать хук shutdown и функцию error_get_last(), чтобы определить, была ли фатальная ошибка, и найти виновника:

add_action('shutdown', 'wpkit_check_fatal_error_and_deactivate_plugin');
function wpkit_check_fatal_error_and_deactivate_plugin() {
    $error = error_get_last();
    if ($error && in_array($error['type'], [E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE])) {
        // Здесь потребуется логика для определения плагина-источника
        // Например, можно проанализировать трассировку или сообщение ошибки
        $plugin_to_deactivate = 'example-plugin/example-plugin.php';
        wpkit_deactivate_plugin_on_error($plugin_to_deactivate);
    }
}

Такой подход требует дополнительной настройки для корректного определения проблемного плагина.

Использование плагинов для автоматического отключения проблемных плагинов

Если не хочется писать код с нуля, можно использовать готовые решения:

  • WP Rollback — позволяет быстро откатывать плагины до рабочей версии, что помогает при ошибках.
  • Health Check & Troubleshooting — проверяет совместимость плагинов и тем, помогает выявить проблемные компоненты.
  • Fatal Error Notify — уведомляет админа о критических ошибках, после чего можно быстро отключить плагин вручную.

Однако автоматическое отключение именно в момент ошибки встречается редко, поэтому кастомный код или доработка плагинов — лучший вариант.

Советы по улучшению автоматизации и мониторинга

Чтобы сделать процесс автоматического отключения плагинов надежным, рекомендуем:

  1. Внедрить централизованный лог ошибок с уведомлениями (например, через плагин WPCommunity для уведомлений).
  2. Регулярно тестировать обновления плагинов в тестовом окружении.
  3. Использовать WP_DEBUG_LOG для отлова ошибок и записи в лог-файл.
  4. Реализовать резервное копирование перед обновлением плагинов, например, с помощью Clearfy Pro.

Пример расширенного кода для автоматического отключения плагина при ошибках

Ниже пример более сложной реализации, которая ищет имя плагина в сообщении об ошибке и отключает его:

add_action('shutdown', 'wpkit_auto_deactivate_faulty_plugin');
function wpkit_auto_deactivate_faulty_plugin() {
    $error = error_get_last();
    if ($error && in_array($error['type'], [E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE])) {
        $message = $error['message'];
        $plugins = get_plugins();
        foreach ($plugins as $path => $plugin) {
            if (stripos($message, $plugin['Name']) !== false) {
                wpkit_deactivate_plugin_on_error($path);
                break;
            }
        }
    }
}

Этот код автоматически проверяет, упоминается ли имя плагина в сообщении об ошибке, и отключает соответствующий плагин.

Заключение

Автоматическое отключение плагинов при ошибках — полезный механизм для стабилизации работы сайта WordPress. Хотя готовых решений в виде плагинов немного, кастомные скрипты с использованием хуков shutdown и анализа ошибок позволяют реализовать такую функциональность. Для комплексного мониторинга и автоматизации рекомендуем дополнительно использовать плагины для логирования, уведомлений и резервного копирования, например, WPCommunity и Clearfy Pro.

Как автоматически отключать плагины в WordPress при ошибках
02.04.2026
Автоматическое отображение динамических пользовательских форм в WordPress
20.03.2026
Как отладить проблемы с PHP Fatal Error в WordPress после обновления
28.04.2026
Как использовать OmniVideo для автоматической вставки видео в WordPress
25.02.2026
Как убрать версию WordPress и оптимизировать загрузку сайта
22.12.2025