Автообновления WordPress: полезные настройки и хуки

Автообновления в WordPress

В октябре 2013 года вышла версия WordPress 3.7, в которой появилась новая функция — автообновления.

Автообновления стали удобным и полезным нововведением. Теперь, когда выходит новая версия WordPress, она обновляется автоматически.

Также доступны следующие возможности:

  • Ускорение работы панели администратора WordPress, отключив агрессивные проверки обновлений.
  • Скрытие уведомлений об обновлениях.

Содержание

  • Общая информация об автообновлениях
  • Полное отключение автообновлений
    1. AUTOMATIC_UPDATER_DISABLED — мягкое отключение
    2. хук automatic_updater_disabled — жесткое отключение
    3. хук auto_update_(type) — жесткое отключение
    4. DISALLOW_FILE_MODS
    5. WP Cron
  • Обновления для ядра WordPress
  • Через параметры (начиная с WP 5.6)
  • Через константу WP_AUTO_UPDATE_CORE
  • Через хуки
  • Автообновления для тем и плагинов
  • Автообновления для переводов
  • Уведомления по электронной почте об автообновлениях
  • Примеры
  • Обновление/Загрузка новых версий стандартных тем и плагинов
  • Плагины
  • Менеджер простых обновлений
  • Отключение всех обновлений WordPress

Общая информация об автообновлениях

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

  1. Ядро WordPress:

    • Небольшие обновления (minor) — версии, которые исправляют ошибки. Пример: 3.7 > 3.7.1. По умолчанию: включено.
    • Большие обновления (major) — версии, которые добавляют новые функции. Пример: 3.9 > 4.0. По умолчанию: отключено (включено с версии 5.6).
    • Разработческие версии (development) — альфа и бета версии. Включены только если установлена альфа/бета версия ядра.
  2. Переводы:

    • Файлы переводов для ядра, тем и плагинов. По умолчанию: включено.
  3. Темы:

    • Начиная с версии 5.5, можно включать автообновления для отдельных тем из панели администратора. По умолчанию: отключено.
  4. Плагины:

    • Начиная с версии 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

Простой плагин без настроек — полностью отключает автообновления и все, что с ними связано.

Установите, активируйте и забудьте о всех обновлениях!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *