Диагностика проблемы: почему стоит отключать плагины при обновлениях 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, возможны конфликты с другими плагинами |
| Использование сторонних плагинов для управления обновлениями | Удобный интерфейс, дополнительные функции | Зависимость от стороннего кода, возможны конфликты |