Выборочное выключение/включение автоматических фоновых обновлений. Подробный гайд.

Несмотря на то, что недавно вышла версия WordPress 4.7, я вот пишу про автоматические обновления, которые появились ещё в 3.7 версии.

Нужны они для того, чтобы упростить весь этот процесс + улучшить безопасность. Допустим залатали дыру — и на всех сайтах (где WP 3.7 и выше) всё автоматически обновилось, дыра закрыта. Всё просто.

По умолчанию автообновления включены только для технических релизов (3.7.1, 3.7.2.. ) и для файлов переводов.

Опций в админке для этого не предусмотрено, поэтому, если вы хотите внести какие-то изменения в этот процесс обновления, то вам нужно немного поработать в конфигурационном файле wp-config.php, либо в functions.php текущей темы.

Всего в WordPress существует 4 типа обновлений:

  • Обновления ядра (движка).
  • Обновления тем.
  • Обновления плагинов.
  • Обновления файлов локализации (перевода).

Обновления ядра

Этот тип обновлений подразделяется ещё на три подтипа:

  1. Версии для разработчиков (core development updates).
  2. Технические релизы, в которых обычно исправляют критические ошибки и уязвимости (minor updates).
  3. Основные релизы (например 3.7, 4.7).

Теперь всю теорию про обновления вы знаете — дальше практика :)

Как включить автоматические обновления для основных релизов WordPress, технических релизов и версий для разработчиков?

Для этого вставьте в wp-config.php следующий код. Меня кстати часто спрашивают, куда именно — отвечаю — перед строчкой «Это всё, дальше не редактируем»!

// включить все автоматические обновления ядра
define( 'WP_AUTO_UPDATE_CORE', true );

Как включить автоматические обновления только для технических релизов?

В этом вам поможет код для wp-config.php:

// включить автоматические обновления технических релизов
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Вообще эта опция включена по умолчанию, но иногда она тоже может пригодиться.

Запретить все автоматические обновления ядра WP

Это так же делается одной строчкой кода:

define( 'WP_AUTO_UPDATE_CORE', false );

Включаем автоматические фоновые обновления версий для разработчиков

Это делается кодом, вставляемым в functions.php.

add_filter( 'allow_dev_auto_core_updates', '__return_true' );

Чтобы отключить эти самые обновления, просто заменяем __return_true на __return_false, но возможно вам не придётся этого делать, так как по умолчанию они и так отключены.

Как отключить автообновления для технических релизов

Код так же для functions.php:

add_filter( 'allow_minor_auto_core_updates', '__return_false' );

Включить автообновления для основных релизов

В functions.php:

add_filter( 'allow_major_auto_core_updates', '__return_true' );

Как вы поняли, фильтры в functions.php дадут вам чуть больше возможностей настройки того, какие обновления включить, а какие выключить.

Принудительные автообновления

WordPress умеет определять, используется ли у вас система контроля версий (.git, .hg, .svn), в таком случае он не выполняет автоматические обновления. Но можно отключить это хуком в functions.php.

function true_force_auto_update( $checkout, $context ) {
	return false;
}
add_filter( 'automatic_updates_is_vcs_checkout', 'true_force_auto_update', 10, 2 );

Плагины и темы

Автообновления плагинов и тем отключены по умолчанию, но мы можем их включить. Делается всё через functions.php.

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

Этим кодом, но имейте ввиду, что это нормально, что у вас обновится к примеру какое-то расширение в WooCommerce и перестанет работать оплата на сайте. Конечно, скорее всего это исправят.. Через пару дней :)

// включить автоматические обновления плагинов
add_filter( 'auto_update_plugin', '__return_true' );

Как включить автоматические обновления тем?

При включении этой опции тоже можно ожидать всяких сюрпризов, но зависит конечно от темы, которую вы используете и от её разработчиков.

add_filter( 'auto_update_theme', '__return_true' );

А, да, ещё есть обновления локализаций

Которые включены по умолчанию и могут быть отключены этой строчкой кода:

// отключить обновления файлов перевода
add_filter( 'auto_update_translation', '__return_false' );

P.S. По умолчанию WordPress производит проверку обновлений каждые 12 часов. Конечно, если у вас всё в порядке с WP_Cron.

И ещё кое-что. После обновлений WordPress автоматически отправляет email-уведомление, которое можно отключить этим кодом:

// отключить емайл-уведомления об установке новых версий
add_filter( 'auto_core_update_send_email', '__return_false' );

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 5

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал