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

Диагностика проблемы: почему стоит отключать плагины при обновлениях WordPress

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

Проверить необходимость отключения плагинов можно по следующим признакам:

  • Частые ошибки 500 или 502 после обновления.
  • Ошибка обновления, сопровождаемая сообщениями о конфликте с плагинами.
  • Замедление или зависание процесса обновления.

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

1. Использование хуков WordPress для перехвата обновления

WordPress предоставляет хуки upgrader_pre_install и upgrader_post_install, которые срабатывают до и после процесса обновления соответственно.

2. Код для отключения и повторного включения всех активных плагинов

Добавьте следующий код в файл functions.php вашей темы или создайте небольшой плагин:

function auto_deactivate_plugins_before_update( $upgrader ) {
    if ( ! class_exists( 'Plugin_Upgrader' ) ) {
        return;
    }
    // Получаем список активных плагинов
    $active_plugins = get_option( 'active_plugins', array() );
    if ( empty( $active_plugins ) ) {
        return;
    }
    // Сохраняем активные плагины в опцию для восстановления позже
    update_option( 'auto_deactivated_plugins', $active_plugins );
    // Отключаем все активные плагины
    deactivate_plugins( $active_plugins );
}
add_action( 'upgrader_pre_install', 'auto_deactivate_plugins_before_update' );

function auto_reactivate_plugins_after_update( $upgrader, $hook_extra ) {
    // Проверяем, есть ли список отключённых плагинов
    $plugins_to_reactivate = get_option( 'auto_deactivated_plugins', array() );
    if ( empty( $plugins_to_reactivate ) ) {
        return;
    }
    // Реактивируем плагины
    activate_plugins( $plugins_to_reactivate );
    // Удаляем опцию
    delete_option( 'auto_deactivated_plugins' );
}
add_action( 'upgrader_post_install', 'auto_reactivate_plugins_after_update', 10, 2 );

3. Проверка работы решения

  • Запустите обновление WordPress или плагина через админку.
  • Во время обновления проверьте, что плагины отключены (например, через get_option('active_plugins') или админку).
  • После завершения обновления плагины должны автоматически включиться.
  • Проверьте работоспособность сайта и функционал плагинов.

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

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

error_log('Plugins deactivated before update: ' . implode(',', $active_plugins));
error_log('Plugins reactivated after update: ' . implode(',', $plugins_to_reactivate));

Проверьте логи debug.log в wp-content, если включён WP_DEBUG_LOG.

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

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

  • Плагины не активируются после обновления. Проверьте, что функция activate_plugins() получает корректный массив плагинов. Возможно, плагины были удалены или переименованы.
  • Конфликты с другими плагинами, управляющими обновлениями. Отключите другие плагины обновления или кеширования на время теста.
  • Ошибка прав доступа при активации плагинов. Проверьте права на файлы и папки, а также настройки сервера PHP.
  • Обновление не запускается. Убедитесь, что хуки upgrader_pre_install и upgrader_post_install срабатывают, добавив временный лог или error_log().

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

  • Не отключайте плагины вручную в процессе обновления — это может привести к непредсказуемым ошибкам.
  • Перед внесением изменений обязательно сделайте резервную копию сайта и базы данных.
  • Минимизируйте время отключения плагинов — используйте именно хуки обновления, а не cron-задачи.
  • Для крупных сайтов рекомендуем тестировать обновления на staging-сервере с этим решением.
  • Если у вас установлен Clearfy Pro от WPShop, используйте его функции оптимизации обновления и управления плагинами для дополнительной безопасности (https://wpshop.ru/plugins/clearfy?utm_source=wpfactory.ru&utm_medium=article&utm_campaign=kak-avtomaticheski-otklyuchit-plugins-vo-vremya-obnovlenij-wp).

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

МетодПлюсыМинусы
Ручное отключение перед обновлениемПростотаРиск забыть включить, ошибки в работе сайта
Автоматизация с помощью хуков (описанный метод)Надежность, автоматизация, минимальный простойТребует базовых навыков PHP, возможны конфликты с другими плагинами
Использование сторонних плагинов для управления обновлениямиУдобный интерфейс, дополнительные функцииЗависимость от стороннего кода, возможны конфликты
Как отключить AJAX в WooCommerce для избежания проблем с кэшированием
25.04.2026
Как вывести и использовать метаданные товара WooCommerce в шаблонах
03.05.2026
Как создать автоматическую резервную копию WordPress с помощью WPRemark
20.02.2026
Как отключить и заблокировать XML-RPC в WordPress для защиты сайта
01.04.2026
Как автоматически удалить забытые корзины в WooCommerce
27.05.2026