Диагностика проблемы: зачем отключать обновления и уведомления для плагинов WooCommerce
Обновления плагинов WooCommerce важны для безопасности и функциональности, но иногда возникает необходимость временно или постоянно отключить автоматические обновления и уведомления для отдельных плагинов. Например, если используете кастомные версии плагинов, или обновления вызывают конфликты с другими компонентами сайта.
Основные симптомы проблемы:
- Появляются уведомления в админке о доступных обновлениях для плагинов, которые вы не хотите обновлять.
- Автоматические обновления плагинов происходят без вашего контроля, вызывая сбои.
- Нужно избирательно отключить обновления и уведомления только для конкретных плагинов, а не для всех подряд.
Пошаговое решение: отключаем обновления и уведомления для выбранных плагинов WooCommerce
1. Отключение обновлений через фильтр site_transient_update_plugins
WordPress хранит информацию об обновлениях плагинов в transient update_plugins. Мы можем перехватить этот массив и удалить из него обновления для конкретных плагинов.
add_filter('site_transient_update_plugins', function($transient) {
if (empty($transient->response)) {
return $transient;
}
// Список плагинов, для которых отключаем обновления
$plugins_to_disable = [
'woocommerce/woocommerce.php',
'your-plugin/your-plugin.php'
];
foreach ($plugins_to_disable as $plugin) {
if (isset($transient->response[$plugin])) {
unset($transient->response[$plugin]);
}
}
return $transient;
});2. Отключение уведомлений в админке о доступных обновлениях
Чтобы убрать уведомления с панели администратора, можно использовать хук after_plugin_row_{plugin_basename}. Например, для WooCommerce:
add_action('after_plugin_row_woocommerce/woocommerce.php', function() {
// Просто скрываем строку об обновлении
echo '<style>#woocommerce-woocommerce-php-update {display:none;}</style>';
}, 15);Этот способ работает для скрытия уведомлений на уровне интерфейса, но не влияет на обновления.
3. Отключение автоматических обновлений для конкретных плагинов
Если у вас включены автоматические обновления плагинов, их можно отключить для конкретных плагинов через фильтр auto_update_plugin:
add_filter('auto_update_plugin', function($update, $item) {
$plugins_to_disable = [
'woocommerce/woocommerce.php',
'your-plugin/your-plugin.php'
];
if (in_array($item->plugin, $plugins_to_disable)) {
return false; // Отключаем автообновление
}
return $update;
}, 10, 2);Проверка результата после внедрения
- Перейдите в раздел Консоль > Обновления и убедитесь, что обновления для указанных плагинов не отображаются.
- В разделе Плагины проверьте, что уведомления о доступных обновлениях отсутствуют.
- Если включены автообновления, проверьте логи или воспользуйтесь плагином Debug Bar, чтобы убедиться, что обновления для заданных плагинов не запускаются.
Частые ошибки и как их исправить
- Неверный путь к плагину в списке: вместо
woocommerce/woocommerce.phpуказали неправильный slug — обновления не отключатся. Проверьте точный путь плагина в каталогеwp-content/plugins. - Кэш обновлений не сбрасывается: WordPress кэширует данные об обновлениях. После внесения изменений очистите кэш transient с помощью
wp cache flushили плагина для очистки кэша. - Другие плагины или тема перезаписывают фильтры: убедитесь, что ваш код загружается последним, например, в
functions.phpдочерней темы или отдельном плагине.
Практические советы по безопасности и производительности
- Отключение обновлений увеличивает риск уязвимостей — используйте этот метод только при крайней необходимости.
- Для управления обновлениями в масштабах сайта лучше использовать специализированные плагины, например, WPShop Clearfy Pro (https://wpshop.ru/plugins/clearfy?utm_source=wpmoney.ru&utm_medium=article&utm_campaign=woocommerce-otkljuchenie-obnovlenij-i-uvedomlenij-dlja-konkretnyh-plaginov), предоставляющий расширенные возможности контроля обновлений.
- Регулярно проверяйте статус безопасности и совместимость плагинов, которые отключены от обновлений.
Сравнение способов отключения обновлений и уведомлений WooCommerce
| Метод | Что отключает | Плюсы | Минусы |
|---|---|---|---|
Фильтр site_transient_update_plugins | Обновления плагинов | Полное отключение апдейтов для плагина | Может конфликтовать с кэшированием, требует очистки кэша |
Хук after_plugin_row_{plugin} | Уведомления в админке | Простой способ убрать уведомления | Только визуальное скрытие, обновления работают |
Фильтр auto_update_plugin | Автоматические обновления | Контроль автообновлений на уровне WP | Не отключает уведомления о доступных обновлениях |