Автоматические обновления в WordPress позволяют держать сайт в актуальном состоянии, но иногда возникают ситуации, когда их нужно отключить, чтобы избежать несовместимостей, сбоев в работе плагинов или тем. В этой статье подробно рассмотрим, как управлять автообновлениями тем и плагинов с помощью функций и фильтров WordPress, не прибегая к установке дополнительных плагинов.
Зачем отключать автообновления тем и плагинов WordPress
Автообновления — это удобный механизм, который помогает своевременно получать исправления безопасности и новые функции. Однако:
- Некоторые обновления могут ломать совместимость с кастомным кодом или другими плагинами.
- Автообновления могут произойти в неподходящий момент и привести к простою сайта.
- При наличии сложной многоступенчатой инфраструктуры обновления лучше проводить контролируемо.
Поэтому отключение автообновлений для определённых компонентов сайта — частая задача у опытных разработчиков и администраторов.
Как отключить автообновление плагинов через functions.php
WordPress предоставляет фильтр auto_update_plugin, который позволяет управлять автозагрузками обновлений плагинов. Чтобы полностью отключить автообновления плагинов, добавьте в functions.php вашей темы или в кастомный плагин следующий код:
<?php
function wpupdate_disable_auto_update_plugins( $update, $item ) {
return false; // Отключаем автообновление всех плагинов
}
add_filter( 'auto_update_plugin', 'wpupdate_disable_auto_update_plugins', 10, 2 );
?>Этот код возвращает false для всех плагинов, тем самым запрещая их автообновление. Если нужно отключить автообновления только для определённых плагинов, можно проверить идентификатор плагина ($item->plugin):
<?php
function wpupdate_disable_auto_update_specific_plugins( $update, $item ) {
$plugins_to_disable = [
'akismet/akismet.php',
'hello-dolly/hello.php'
];
if ( in_array( $item->plugin, $plugins_to_disable, true ) ) {
return false;
}
return $update;
}
add_filter( 'auto_update_plugin', 'wpupdate_disable_auto_update_specific_plugins', 10, 2 );
?>Как узнать идентификатор плагина для фильтра
Чтобы узнать идентификатор, перейдите в папку плагина на сервере (обычно wp-content/plugins/) и посмотрите имя основной PHP-страницы плагина. Например, для Akismet это akismet/akismet.php.
Отключение автообновлений тем WordPress
Для тем WordPress доступен аналогичный фильтр — auto_update_theme. Чтобы полностью отключить автообновления тем, добавьте следующий код:
<?php
function wpupdate_disable_auto_update_themes( $update, $item ) {
return false; // Отключаем автообновления всех тем
}
add_filter( 'auto_update_theme', 'wpupdate_disable_auto_update_themes', 10, 2 );
?>Если нужно отключить автообновления для конкретных тем, например, для темы Reboot, используйте:
<?php
function wpupdate_disable_auto_update_specific_themes( $update, $item ) {
$themes_to_disable = [
'reboot'
];
if ( in_array( $item->theme, $themes_to_disable, true ) ) {
return false;
}
return $update;
}
add_filter( 'auto_update_theme', 'wpupdate_disable_auto_update_specific_themes', 10, 2 );
?>Как узнать слаг темы
Слаг темы — это имя папки темы в wp-content/themes/. Например, если тема находится в папке reboot, то слаг — reboot.
Управление автообновлениями через плагин Clearfy Pro
Если вы используете Clearfy Pro, то в нем есть удобный интерфейс для управления автообновлениями без ручного редактирования кода.
Плагин позволяет:
- Отключать автообновления для всех плагинов и тем
- Устанавливать автообновления только для выбранных компонентов
- Включать и отключать автообновления ядра WordPress
Это повышает безопасность и удобство управления сайтом, особенно если у вас много плагинов и тем.
Дополнительные советы по управлению автообновлениями
Ведение журнала обновлений
Чтобы отслеживать, какие обновления были применены, можно добавить логирование в фильтры автообновления:
<?php
function wpupdate_log_auto_update( $update, $item ) {
if ( $update ) {
error_log( 'Автообновление разрешено для: ' . ( $item->plugin ?? $item->theme ) );
} else {
error_log( 'Автообновление отключено для: ' . ( $item->plugin ?? $item->theme ) );
}
return $update;
}
add_filter( 'auto_update_plugin', 'wpupdate_log_auto_update', 20, 2 );
add_filter( 'auto_update_theme', 'wpupdate_log_auto_update', 20, 2 );
?>Так вы сможете в файле debug.log видеть, какие компоненты обновляются автоматически, а какие — нет.
Отключение автообновлений для ядра WordPress
Для полного контроля иногда нужно отключить автообновления ядра. Это делается через фильтр auto_update_core:
<?php
add_filter( 'auto_update_core', '__return_false' );
?>Но имейте в виду, что отключение автообновлений безопасности ядра не рекомендуется без веских причин.
Заключение по теме
Управление автообновлениями в WordPress — важный аспект поддержки сайта. Используя встроенные фильтры auto_update_plugin и auto_update_theme, вы можете гибко настраивать поведение обновлений без установки дополнительных плагинов.
Если нужна более удобная панель управления, рекомендую попробовать Clearfy Pro. Это надежное решение для комплексной оптимизации и управления WordPress.