Как автоматически отключать подключённые плагины после обновлений в WordPress

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

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

Диагностика проблемы с обновлениями плагинов

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

  • Включите режим отладки WordPress в wp-config.php: define('WP_DEBUG', true); и define('WP_DEBUG_LOG', true);
  • Проверьте файл wp-content/debug.log на ошибки после обновления
  • Отключите все плагины вручную и поочерёдно включайте их, чтобы выявить конфликтный
  • Проверьте логи сервера и ошибки PHP

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

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

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

add_action('upgrader_process_complete', 'auto_deactivate_plugins_after_update', 10, 2);
function auto_deactivate_plugins_after_update($upgrader_object, $options) {
    // Проверяем, что обновление - плагин или ядро
    if ($options['action'] == 'update' && in_array($options['type'], ['plugin', 'core'])) {
        // Список плагинов для автоотключения после обновления
        $plugins_to_deactivate = [
            'akismet/akismet.php',
            'contact-form-7/wp-contact-form-7.php',
            // Добавьте свои плагины в формате 'папка/файл.php'
        ];
        deactivate_plugins($plugins_to_deactivate);
        // Логируем для диагностики
        if (defined('WP_DEBUG') && WP_DEBUG) {
            error_log('Автоматическое отключение плагинов после обновления: ' . implode(', ', $plugins_to_deactivate));
        }
    }
}

Этот код добавьте в functions.php вашей темы или в кастомный плагин. Он сработает каждый раз после обновления ядра или любого плагина.

Расширение: уведомление администратора

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

add_action('upgrader_process_complete', 'notify_admin_on_plugins_deactivation', 11, 2);
function notify_admin_on_plugins_deactivation($upgrader_object, $options) {
    if ($options['action'] == 'update' && in_array($options['type'], ['plugin', 'core'])) {
        $plugins = [
            'akismet/akismet.php',
            'contact-form-7/wp-contact-form-7.php',
        ];
        $admin_email = get_option('admin_email');
        $subject = 'Плагины автоматически отключены после обновления';
        $message = 'После обновления WordPress автоматически отключены следующие плагины: ' . implode(', ', $plugins);
        wp_mail($admin_email, $subject, $message);
    }
}

Проверка результата после внедрения

Чтобы проверить, что автоматическое отключение работает:

  1. Обновите один из указанных плагинов (или само ядро WordPress) через админку
  2. После обновления зайдите в раздел "Плагины" и убедитесь, что указанные плагины отключены
  3. Проверьте файл wp-content/debug.log на записи об отключении
  4. Проверьте почту администратора на уведомление, если добавляли уведомление

Если плагины отключены автоматически, значит решение работает корректно.

Частые ошибки и как их исправить

  • Плагины не отключаются после обновления: Проверьте, правильно ли указан путь к плагину в массиве $plugins_to_deactivate. Путь должен соответствовать структуре папок плагина, например, folder/plugin-file.php.
  • Код не срабатывает: Убедитесь, что хук upgrader_process_complete добавлен с приоритетом не ниже 10 и функция подключена в functions.php или кастомном плагине, который активен.
  • Письма не отправляются: Проверьте настройки почты на сервере и работу функции wp_mail. Для отладки можно временно заменить на error_log.
  • Конфликты с другими плагинами управления обновлениями: Если используете плагины для автоматизации обновлений, проверьте их настройки, чтобы они не блокировали хук.

Практические советы по безопасности и производительности

  • Не отключайте массово все плагины — выбирайте только те, которые могут вызвать проблемы после обновления
  • Реализуйте логи ошибок и уведомления, чтобы оперативно реагировать на проблемы
  • Если используете автоматическое обновление, интегрируйте механизм отката (rollback) обновления для критических плагинов
  • Регулярно тестируйте обновления на staging-сервере перед применением на продакшене
  • Для крупных проектов рассмотрите использование специализированных инструментов для управления обновлениями и зависимостями, например, Composer или WP-CLI скрипты

Сравнение методов автоматического отключения плагинов

МетодПлюсыМинусыКомпромисс
Код на хуке upgrader_process_completeПолный контроль, без сторонних плагиновТребует знаний PHP, возможны ошибки в путяхИспользовать вместе с логированием и уведомлениями
Плагины автоконтроля обновлений (например, WP Rollback)Удобный UI, поддержка откатаДополнительная нагрузка, возможны конфликтыИспользовать на больших проектах с тестированием
Автоматические скрипты WP-CLIВысокая гибкость, автоматизация CI/CDТребует серверного доступа и знаний командной строкиПодходит для продвинутых пользователей

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

⭐⭐⭐⭐⭐
Как сделать автоматический rollback обновлений WordPress при ошибках
25.03.2026
Как создать бесплатный плагин для WordPress с поддержкой AJAX
15.11.2025
Как удалить неиспользуемые изображения в WordPress и освободить место
23.12.2025
Как успешно использовать REST API WordPress для автоматизации задач
24.02.2026
Как создать автоматический импорт данных из Google Analytics в WordPress
07.04.2026
×
Обнови свой WordPress!

Держи скидку 15% на премиум тему Reboot

Купить со скидкой ⋙