Начиная с версии 3.7 ядро WordPress обновляется автоматически, без участия пользователей. Есть ряд ситуаций, по которой подобные обновления не желательны, и в этой статье мы рассмотрим несколько способов отключить автоматическое обновление WordPress.
В первую очередь стоит отметить, что автоматические обновления (по умолчанию) касаются лишь технических релизов — это те, которые устраняют некоторые критические ошибки и уязвимости WordPress. Пропускать подобные обновления не безопасно и крайне не рекомендуется, а система отката сможет восстановить вашу прежнюю версию, в случае каких-либо сбоев при попытке обновления.
Есть три основных причины, по которым вам следует отключить автоматическое обновление WordPress:
- Вы используете систему контроля версий, в том числе и для обновлений
- Вы пользуетесь какими-либо средствами для развёртывания проектов на удалённых серверах, например Capistrano или SaltStack
- Вы являетесь хостинг-провайдером и выполняете обновления самостоятельно и вовремя для всех ваших клиентов
Управление автоматическим обновлением
Существует несколько констант, для управления автоматическими обновлениями в WordPress, их вы можете устанавливать в файле конфигурации wp-config.php. Например, чтобы полностью отключить механизм автоматических обновлений, используйте константу AUTOMATIC_UPDATER_DISABLED
:
define( 'AUTOMATIC_UPDATER_DISABLED', true );
Учтите, что с помощью этой директивы, вы так же отключите автоматические обновления языковых пакетов, тем и плагинов, если они включены. С помощью константы WP_AUTO_UPDATE_CORE
, вы можете управлять автоматическим обновлением ядра WordPress.
Значение по умолчанию — minor
, разрешит автоматическое обновление только на технические релизы, например с 3.7 на 3.7.1 и на 3.7.2, но не на 3.8, 3.9 и т.д. Значением false
вы можете полностью отключить автоматическое обновление ядра, а значением true
вы можете включить автоматическое обновление для всех релизов (а не только технических):
// Только технические релизы, 3.7 до 3.7.1, 3.7.2 и т.д. (значение по умолчанию) define( 'WP_AUTO_UPDATE_CORE', 'minor' ); // Все релизы, 3.7 до 3.8, 3.9 и т.д. define( 'WP_AUTO_UPDATE_CORE', true ); // Отключить автоматическое обновление ядра define( 'WP_AUTO_UPDATE_CORE', false );
Вы так же можете воспользоваться специальными фильтрами для управления автоматическими обновлениями ядра:
allow_major_auto_core_updates
— обновление основных релизов (с 3.7 на 3.8)allow_minor_auto_core_updates
— обновление на технические релизы (с 3.7 на 3.7.1 и 3.7.2)allow_dev_auto_core_updates
— обновление на версии для разработчиков (с 3.7-RC до 3.7-RC2)auto_update_core
— разрешить автоматическое обновление ядра
Вы можете написать простой плагин, чтобы использовать эти фильтры на вашем сайте. Например, чтобы разрешить обновление основных релизов:
/** * Plugin Name: Enable Major Core Updates */ add_filter( 'allow_major_auto_core_updates', '__return_true' );
А чтобы запретить автоматическое обновление ядра WordPress:
add_filter( 'auto_update_core', '__return_false' );
Учтите, что многие сайты рекомендуют использовать подобные фильтры в файле functions.php вашей активной темы. Мы советуем вам этого не делать, поскольку это не даёт никаких преимуществ, а этот файл перестанет исполняться, если вдруг вы решите изменить тему вашего сайта. Подробнее в статье про functions.php.
Автоматическое обновление тем и плагинов WordPress
По умолчанию WordPress не будет автоматически обновлять ваши темы и плагины, но это можно легко изменить с помощью фильтров auto_update_theme
и auto_update_plugin
:
/** * Plugin Name: Auto-update Plugins and Themes */ add_filter( 'auto_update_theme', '__return_true' ); add_filter( 'auto_update_plugin', '__return_true' );
Таким же образом, если автоматическое обновление тем и плагинов включено, вы можете легко его отключить используя вспомогательную функцию __return_false
.
Системы контроля версий
Перед тем как выполнить автоматическое обновление, WordPress выполнит поиск директорий .svn, .git, .hg и .bz — это вспомогательные директории систем контроля версий Subversion, Git, Mercurial, и Bazaar. В случае обнаружения одной из них, автоматическое обновление выполняться не будет.
Если вы используете систему контроля версий и всё равно хотите, чтобы ядро WordPress обновлялось автоматически, вы можете воспользоваться фильтром automatic_updates_is_vcs_checkout
.
В заключении хотелось бы вновь отметить, что отключать автоматическое обновление ядра WordPress не рекомендуется, особенно когда речь идёт о технических релизах, которые часто содержат устранение уязвимостей. Если по какой-либо причине автоматическое обновление на вашем сайте невозможно, вы можете воспользоваться специальным плагином Background Update Tester, который поможет вам найти и устранить причину.
Подробнее о том, почему стоит всегда обновлять WordPress, плагины и темы, читайте в нашей статье.