Автообновления в WordPress
В октябре 2013 года вышла версия WordPress 3.7, в которой появилась новая функция — автообновления.
Автообновления стали удобным и полезным нововведением. Теперь, когда выходит новая версия WordPress, она обновляется автоматически.
Также доступны следующие возможности:
- Ускорение работы панели администратора WordPress, отключив агрессивные проверки обновлений.
- Скрытие уведомлений об обновлениях.
Содержание
- Общая информация об автообновлениях
- Полное отключение автообновлений
AUTOMATIC_UPDATER_DISABLED
— мягкое отключение- хук
automatic_updater_disabled
— жесткое отключение - хук
auto_update_(type)
— жесткое отключение DISALLOW_FILE_MODS
- WP Cron
- Обновления для ядра WordPress
- Через параметры (начиная с WP 5.6)
- Через константу
WP_AUTO_UPDATE_CORE
- Через хуки
- Автообновления для тем и плагинов
- Автообновления для переводов
- Уведомления по электронной почте об автообновлениях
- Примеры
- Обновление/Загрузка новых версий стандартных тем и плагинов
- Плагины
- Менеджер простых обновлений
- Отключение всех обновлений WordPress
Общая информация об автообновлениях
В WordPress есть 4 типа автообновлений:
-
Ядро WordPress:
- Небольшие обновления (minor) — версии, которые исправляют ошибки. Пример: 3.7 > 3.7.1. По умолчанию: включено.
- Большие обновления (major) — версии, которые добавляют новые функции. Пример: 3.9 > 4.0. По умолчанию: отключено (включено с версии 5.6).
- Разработческие версии (development) — альфа и бета версии. Включены только если установлена альфа/бета версия ядра.
-
Переводы:
- Файлы переводов для ядра, тем и плагинов. По умолчанию: включено.
-
Темы:
- Начиная с версии 5.5, можно включать автообновления для отдельных тем из панели администратора. По умолчанию: отключено.
-
Плагины:
- Начиная с версии 5.5, можно включать автообновления для отдельных плагинов из панели администратора. По умолчанию: отключено.
Значения по умолчанию
По умолчанию автообновления включены только для "небольших обновлений ядра" и "файлов переводов". Если установлена альфа или бета версия WordPress, то "разработческие версии" также включены.
"Большие обновления" отключены, так как они могут добавить новые функции и потенциально нарушить работу сайта.
Изменение настроек автообновлений
Вы можете изменить поведение автообновлений с помощью констант в файле wp-config.php
. Константы также могут быть указаны в плагинах, если они ещё не определены.
Существуют специальные хуки для изменения поведения автообновлений, которые можно использовать в плагинах или в файле functions.php
.
Какие классы отвечают за автообновления
Класс WP_Automatic_Updater
отвечает за общую логику автообновлений. В зависимости от типа обновления, он вызывает соответствующие классы:
Core_Upgrader
Plugin_Upgrader
Theme_Upgrader
Language_Pack_Updater
Полное отключение автообновлений
Вот несколько способов полного отключения автообновлений:
1. AUTOMATIC_UPDATER_DISABLED
— мягкое отключение
Если эта константа определена в файле wp-config.php
или в плагине, все автообновления будут отключены. Однако это можно переопределить с помощью хука automatic_updater_disabled
.
define( 'AUTOMATIC_UPDATER_DISABLED', true ); // полностью отключает автообновления
2. Хук automatic_updater_disabled
— жесткое отключение
Этот хук полностью отключает обновление и не позволяет изменить его с помощью константы AUTOMATIC_UPDATER_DISABLED
.
add_filter( 'automatic_updater_disabled', '__return_true' );
3. Хук auto_update_(type)
— жесткое отключение
Этот хук позволяет отключить автообновления только для определенного типа, а не для всех сразу.
add_filter( 'auto_update_core', '__return_false' ); // отключить автообновления ядра
add_filter( 'auto_update_theme', '__return_false' ); // отключить автообновления тем
add_filter( 'auto_update_plugin', '__return_false' ); // отключить автообновления плагинов
add_filter( 'auto_update_translation', '__return_false'); // отключить автообновления переводов
4. DISALLOW_FILE_MODS
Автообновления будут отключены, если возможность изменять файлы WordPress отключена через константу DISALLOW_FILE_MODS
:
define( 'DISALLOW_FILE_MODS', true );
5. WP Cron
Все автообновления основаны на CRON-задачах. Поэтому, если вы отключите cron на сайте, все автообновления также будут отключены.
Cron отключается с помощью следующей константы в файле wp-config.php
:
define( 'DISABLE_WP_CRON', true );
Отключать cron не рекомендуется, так как он используется для различных задач как плагинами, так и самим WordPress.
Обновления для ядра WordPress
Через параметры (начиная с WP 5.6)
Можно изменить параметры автообновлений для ядра WordPress:
auto_update_core_major
— включено (для новых сайтов) | unset (для старых сайтов)auto_update_core_minor
— включеноauto_update_core_dev
— включено
Через константу WP_AUTO_UPDATE_CORE
Вы также можете изменить настройки автообновлений для ядра WordPress с помощью константы WP_AUTO_UPDATE_CORE
.
// Включает обновления ядра только для небольших версий (по умолчанию)
define( 'WP_AUTO_UPDATE_CORE', 'minor' );
// Полностью отключает обновление ядра
define( 'WP_AUTO_UPDATE_CORE', false );
// Включает все обновления ядра (небольшие и большие)
define( 'WP_AUTO_UPDATE_CORE', true );
Через хуки
Можно также настроить автообновления ядра WordPress через хуки.
// автообновление небольших версий (версии в пределах ветки)
add_filter( 'allow_minor_auto_core_updates', '__return_false' );
// автообновление больших версий (версии между ветками)
add_filter( 'allow_major_auto_core_updates', '__return_false' );
// автообновление разработческих версий
add_filter( 'allow_dev_auto_core_updates', '__return_false' );
// автообновление всех опций
add_filter( 'after_core_auto_updates_settings', function( $auto_update ){
/*
$auto_update = array(
'dev' => true,
'minor' => true,
'major' => false,
);
*/
return $auto_update;
} );
Автообновления для тем и плагинов
По умолчанию автообновления отключены для тем и плагинов.
Начиная с версии 5.5, можно включать автообновления для отдельных плагинов и тем. Это можно сделать через панель администратора.
Примеры хуков
// Включить автообновления для всех плагинов
add_filter( 'auto_update_plugin', '__return_true' );
// Включить автообновления для всех тем
add_filter( 'auto_update_theme', '__return_true' );
// Включить автооб��овление только для определенного плагина
add_filter( 'auto_update_plugin', 'auto_update_specific_plugins', 10, 2 );
function auto_update_specific_plugins( $update, $item ){
// Массив плагинов, которые должны автоматически обновляться
$plugins = array ('akismet', 'buddypress');
if( in_array( $item->slug, $plugins ) ){
return true; // обновление
}
return $update; // возвращаем без изменений
}
Автообновления для переводов
Чтобы управлять обновлениями переводов, есть такой хук:
// отключить автообновления файлов переводов
add_filter( 'auto_update_translation', '__return_false' );
Уведомления по электронной почте об автообновлениях
AUTO_CORE_UPDATE_SEND_EMAIL
Когда основное ядро обновляется, администраторы получают уведомление по электронной почте. Вы можете отключить такие уведомления с помощью следующего хука:
// отключить отправку писем о автообновлениях
add_filter( 'auto_core_update_send_email', '__return_false' );
SEND_CORE_UPDATE_NOTIFICATION_EMAIL
Этот фильтр позволяет указать, уведомлять ли администратора о новом обновлении.
По умолчанию администраторы получают уведомления только при получении propuesta обновления от WordPress.org, если включен определённый флаг.
apply_filters( 'send_core_update_notification_email', '__return_true' );
AUTOMATIC_UPDATES_SEND_DEBUG_EMAIL
Фильтр для определения, отправлять ли отладочные письма при каждом автоматическом обновлении.
apply_filters( 'automatic_updates_send_debug_email', '__return_true' );
Примеры
Давайте оставим включенными только обновления для плагинов и тем и отключим обновления ядра, переводов и уведомления по электронной почте.
// отключить обновления ядра
add_filter( 'auto_update_core', '__return_false' );
// включить все обновления тем
add_filter( 'auto_update_theme', '__return_true' );
// включить все обновления плагинов
add_filter( 'auto_update_plugin', '__return_true' );
// отключить все обновления переводов
add_filter( 'auto_update_translation', '__return_false' );
// отключить уведомления по электронной почте
add_filter( 'auto_core_update_send_email', '__return_false' );
Обновление/Загрузка новых версий стандартных тем и плагинов
WordPress поставляется со стандартными темами и плагинами. Каждый раз, когда выполняются проверки обновлений, также проверяется наличие новых версий этих тем и плагинов.
Существует настройка, которая позволяет отключить проверки обновлений и загрузку новых стандартных пакетов.
Плагины
Менеджер простых обновлений
Популярный плагин, который позволяет управлять всем�� типами обновлений на сайте.
Отключение всех обновлений WordPress
Простой плагин без настроек — полностью отключает автообновления и все, что с ними связано.
Установите, активируйте и забудьте о всех обновлениях!