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

25 окт. 2013 г., 17:43:10
Просмотры: 15.4K
Голосов: 35

В WordPress 3.7 появились автоматические обновления. Как это работает и как можно настроить эту функцию?

0
Все ответы на вопрос 2
9
30

Автоматические обновления происходят автоматически.

Стандартное поведение в WordPress 3.7 — автоматическое обновление ядра для минорных версий (например, с X.Y.Z на X.Y.Z+1).

В интерфейсе нет настроек для изменения этого поведения. Чтобы изменить его, вам нужно отредактировать файл wp-config.php или добавить фильтры:

Простое отключение

Добавьте следующее в wp-config.php:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

Или добавьте фильтр:

add_filter( 'automatic_updater_disabled', '__return_true' );

Управление обновлениями ядра

Через wp-config.php:

// Обновлять ядро — dev, major и minor версии
define( 'WP_AUTO_UPDATE_CORE', true );

// Обновлять ядро — только minor версии
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

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

Через фильтры:

// Включить ночные сборки (dev-обновления):
add_filter( 'allow_dev_auto_core_updates', '__return_true' );

// Включить обновления major версий:
add_filter( 'allow_major_auto_core_updates', '__return_true' );

// Отключить обновления minor версий
add_filter( 'allow_minor_auto_core_updates', '__return_false' );

Темы и плагины

Полное или частичное автообновление тем и плагинов:

Обновления тем и плагинов отключены по умолчанию. Чтобы включить через фильтр:

add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );

Эти фильтры передаются объекту обновления, поэтому можно манипулировать им, чтобы указать, какие темы или плагины обновлять автоматически (включить в белый список) или исключить из автообновлений.

Файлы переводов

Обновления файлов переводов включены по умолчанию. Чтобы отключить через фильтр:

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

Письма с результатами обновлений

Система обновлений отправляет письмо с результатом после успешного обновления, ошибки или критической ошибки. Чтобы отключить через фильтр:

// Отключить письма об обновлениях
add_filter( 'auto_core_update_send_email', '__return_false' );

Этот фильтр также можно использовать для настройки писем в зависимости от типа письма $type (успех, ошибка, критическая ошибка), объекта типа обновления $core_update или результата $result:

/* @param bool   $send        Отправлять ли письмо. По умолчанию true.
 * @param string $type        Тип письма.
 *                            Может быть 'success', 'fail' или 'critical'.
 * @param object $core_update Предложение обновления, которое было предпринято.
 * @param mixed  $result      Результат обновления ядра. Может быть WP_Error.
 */
apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result );

Дополнительная информация

Запись в Codex доступна здесь. Больше информации здесь.

25 окт. 2013 г. 17:43:10
Комментарии

Есть ли способ проверить, работают ли автоматические обновления, кроме как ждать? Также можно ли исключить определенные плагины из фильтра обновлений плагинов?

Howdy_McGee Howdy_McGee
25 окт. 2013 г. 17:48:16

Включить ночные сборки и подождать до завтра? :) И нет, в настоящее время нет возможности включать/исключать определенные плагины или темы; это все или ничего.

Chip Bennett Chip Bennett
25 окт. 2013 г. 18:05:44

Я думаю, это можно сделать для отдельных обновлений тем/плагинов, согласно комментариям Nacin: "Предыдущие варианты конфигурации — все или ничего. Однако вам может потребоваться более детальная настройка. Фильтр auto_update_$type (auto_update_core, auto_update_plugin, auto_update_theme, auto_update_translation) срабатывает для конкретных обновлений, когда они готовы к обновлению. Этот фильтр получает объект обновления, который описывает, что WordPress собирается обновить. Это означает, что вы можете выборочно включать обновления отдельных плагинов или тем, например, или добавить в белый список предстоящие обновления ядра."

pollyplummer pollyplummer
25 окт. 2013 г. 20:12:55

@pollyplummer конечно, добавь эту информацию в ответ! Это полезная информация. :)

Chip Bennett Chip Bennett
25 окт. 2013 г. 20:17:08

В разделе "Простое обновление", не должно ли быть "Или добавь следующий фильтр"?

brasofilo brasofilo
25 окт. 2013 г. 20:40:51

@brasofilo "В разделе "Простое обновление", не должно ли быть "Или добавь следующий фильтр"?" - согласно Codex, нет. Рекомендуется использовать оба варианта.

Chip Bennett Chip Bennett
25 окт. 2013 г. 20:52:44

Если я правильно понимаю основную логику, сначала проверка проходит через фильтр, затем через константу. Если это так, мы должны обновить запись в Codex, добавив "или". Также я вижу, что DISALLOW_FILE_MODS полностью останавливает любые виды обновлений.

brasofilo brasofilo
25 окт. 2013 г. 21:12:27

Обновил раздел о полном отключении, чтобы отразить изменения в Codex. Обновил разделы о темах/плагинах для указания целевой фильтрации. Добавил раздел об отключении/изменении email-уведомлений о результатах обновлений.

Chip Bennett Chip Bennett
26 окт. 2013 г. 21:04:16

@Howdy_McGee Я только что опубликовал руководство по исключению определенных плагинов. Кроме того, на странице обновлений в WordPress указано, включены ли автоматические обновления. Если там не упоминается об автоматических обновлениях, используйте этот плагин, чтобы узнать, почему они отключены.

David David
28 янв. 2014 г. 05:26:39
Показать остальные 4 комментариев
2

Вы можете проверить, поддерживает ли ваш сайт и сервер автоматические обновления, с помощью плагина Background Update Tester. Как говорит Nacin: "Этот плагин проверяет совместимость вашего сайта и объясняет любые проблемы."

1 нояб. 2013 г. 02:42:29
Комментарии

Не обновлялось с 2015 года, времен WordPress ~ 4.1.

kubanczyk kubanczyk
6 янв. 2018 г. 15:17:31

Минус из-за очень уместного комментария @kubanczyk.

Gwyneth Llewelyn Gwyneth Llewelyn
14 февр. 2023 г. 21:05:57