Вопрос или проблема
WordPress автоматически проверяет обновления для себя и всех установленных тем и плагинов. Это добавляет раздражающе долгую задержку при загрузке (любых) страниц WordPress. Это происходит только один раз в день, и последующие загрузки страниц этого не делают, но задержка настолько велика, что заставляет меня дважды задуматься, стоит ли открывать эту первую страницу вообще (особенно если мне нужно сделать что-то быстро, а не проводить весь день в WordPress).
Я обновляю раз в какое-то время, и мне бы намного больше понравилось выполнять обновления вручную, поэтому я создал плагин, чтобы убрать кнопку Обновления из админ-панели. Я думал, это решит проблему, но, по сути, это только убирает кнопку, и фактическая проверка все равно выполняется в фоновом режиме.
Каждая другая программа в мире позволяет отключать автоматическое обновление, поэтому я ожидаю, что должен быть способ сделать то же самое для WordPress, но если он есть, то он немного слишком хорошо спрятан.
Когда я пытался найти решение, все вопросы, которые возникали, были противоположными: о том, как принудительно заставить автоматические обновления действительно применяться (а не просто автоматически проверять обновления).
Как можно отключить автоматическую проверку обновлений в WordPress?
Как отключить автоматические обновления ядра, но включить автоматические обновления плагинов и тем
Если вы хотите остановить автоматические обновления ядра WordPress, но включить их для ваших плагинов и/или тем, вы можете добавить эти строки в файл wp-config.php: Остановите автоматические обновления ядра:
define( 'WP_AUTO_UPDATE_CORE', false );
Затем включите обновления плагинов/тем:
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
Как полностью отключить автоматические обновления WordPress
Если вы хотите полностью отключить автоматические обновления WordPress, откройте файл wp-config.php и добавьте в него эту строку:
define( 'AUTOMATIC_UPDATER_DISABLED', true );
Это сработало для меня, чтобы отключить это на localhost — что было очень раздражающе, так как он находится за файерволом, и время ожидания было огромным.
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
define( 'AUTOMATIC_UPDATER_DISABLED', true );
define( 'WP_AUTO_UPDATE_CORE', false );
Обратите внимание, что не уверен, необходимо ли отключать WP_HTTP_BLOCK_EXTERNAL. Я не рекомендую отключать его на сервере, который требует связи с другими серверами.
Хорошо, вот решение, которое удаляет доступные обновления и также предотвращает проверку обновлений.
Это решение предполагает PHP > 5.3 (так как оно использует анонимные функции)
Часть 1) Очищает любые существующие обновления:
add_filter( 'site_transient_update_plugins',
function ( $oUpdatesResult ) {
if ( ! is_object( $oUpdatesResult ) ) {
$oUpdatesResult = new stdClass();
}
$oUpdatesResult->response = array();
return $oUpdatesResult;
},
PHP_INT_MAX
);
Часть 2) Предотвращает исходящий HTTP-запрос, который выполняет фактическую проверку:
add_filter( 'pre_http_request',
function ( $bFalse, $aReqParams, $sUrl ) {
if ( strpos( $sUrl, '//api.wordpress.org/plugins/update-check/1.1/' ) ) {
$bFalse = null;
}
return $bFalse;
},
PHP_INT_MAX,
3
);
Обратите внимание на следующие моменты:
- WordPress проверяет обновления только тогда, когда вы загружаете определенные страницы в админской панели, такие как страница плагинов и страница обновлений, так что вы на самом деле не получаете никакой выгоды в производительности.
- Это только для плагинов. Чтобы обработать темы, повторите то, что вы здесь видите, за исключением того, где вы видите “plugin”, замените на “theme”. То есть в имени фильтра и в URL.
- вы можете поместить это в functions.php вашей темы
Марк Джаркуит уже писал об этом на своем блоге некоторое время назад. В общем, это просто отменяет запросы к публичным репозиториям SVN на wp dot org через фильтры WP HTTP API.
Для плагинов (должен быть помещен внутри плагина):
add_filter( 'http_request_args', 'wpse_102554_deny_plugin_updates', 5, 2 );
function wpse_102554_deny_plugin_updates( $r, $url )
{
if ( 0 !== strpos( $url, 'http://api.wordpress.org/plugins/update-check' ) )
return $r;
$plugins = unserialize( $r['body']['plugins'] );
unset(
$plugins->plugins[ plugin_basename( __FILE__ ) ],
$plugins->active[ array_search( plugin_basename( __FILE__ ), $plugins->active ) ]
);
$r['body']['plugins'] = serialize( $plugins );
return $r;
}
Для тем (должен быть помещен внутри functions.php
темы и работает только для текущей активной темы):
add_filter( 'http_request_args', 'wpse_102554_deny_theme_updates', 5, 2 );
function wpse_102554_deny_theme_updates( $r, $url )
{
if ( 0 !== strpos( $url, 'http://api.wordpress.org/themes/update-check' ) )
return $r;
$themes = unserialize( $r['body']['themes'] );
unset(
$themes[ get_option( 'template' ) ],
$themes[ get_option( 'stylesheet' ) ]
);
$r['body']['themes'] = serialize( $themes );
return $r;
}
Джон Блэкбурн написал плагин для отключения обновлений тем.
Следующий код отключит автоматическую проверку обновлений на админ-панели WordPress. Вы можете добавить его в файл functions.php
вашей темы.
remove_action('admin_init', '_maybe_update_core');
remove_action('admin_init', '_maybe_update_plugins');
remove_action('admin_init', '_maybe_update_themes');
Ответ или решение
Отключение автоматической проверки обновлений в WordPress
WordPress, безусловно, является одной из самых популярных платформ для создания веб-сайтов, однако его автоматическая проверка обновлений может вызывать неудобства для пользователей, кто предпочитает управлять обновлениями вручную. Если вы заметили, что автоматическая проверка обновлений вызывает замедление загрузки страниц админки, вам может подойти решение этой проблемы. В этой статье мы рассмотрим детальные шаги для отключения автоматической проверки обновлений в WordPress.
Причины отключения автоматической проверки обновлений
Автоматическая проверка обновлений происходит ежедневно и может значительно замедлить время загрузки, особенно на локальных или медленных серверах. Если вы выполняете обновления вручную и предпочитаете контролировать этот процесс, то отключение этой функции — разумный шаг.
Шаги по отключению автоматической проверки обновлений
-
Открытие файла
wp-config.php
:
Этот файл находится в корневом каталоге вашей установки WordPress. Используйте FTP-клиент или файловый менеджер в панели управления хостингом, чтобы получить доступ к этому файлу. -
Добавление кода для отключения автоматических обновлений:
Вставьте следующий код в файлwp-config.php
:define('AUTOMATIC_UPDATER_DISABLED', true);
Эта строка полностью отключает автоматические обновления в WordPress, включая обновления ядра, плагинов и тем.
-
Дополнительные настройки:
Чтобы еще более точно контролировать, какие автоматические обновления отключить, вы можете использовать следующий код для отключения только проверки обновлений ядра, оставляя возможность для обновлений плагинов и тем:define('WP_AUTO_UPDATE_CORE', false); add_filter('auto_update_plugin', '__return_true'); add_filter('auto_update_theme', '__return_true');
-
Удаление проверок обновлений для плагинов и тем:
Для полной блокировки не только проверки, но и отображения доступных обновлений, добавьте следующий код в файлfunctions.php
вашей темы или создайте собственный плагин:add_filter('site_transient_update_plugins', function($updates) { return (object) ['response' => []]; }, PHP_INT_MAX); add_filter('site_transient_update_themes', function($updates) { return (object) ['response' => []]; }, PHP_INT_MAX);
-
Отключение действий, связанных с проверкой обновлений:
Можно также убрать действия, запускающие проверку обновлений, добавив следующие строки вfunctions.php
:remove_action('admin_init', '_maybe_update_core'); remove_action('admin_init', '_maybe_update_plugins'); remove_action('admin_init', '_maybe_update_themes');
Заключение
Следуя приведенным выше шагам, вы сможете эффективно отключить автоматическую проверку обновлений в WordPress и минимизировать задержки при загрузке суток. Решения, предоставленные в этой статье, помогут вам настроить WordPress под ваши личные предпочтения и улучшить взаимодействие с платформой.
Эти изменения обеспечат вам полный контроль над обновлениями, позволяя выполнять их в удобное для вас время, без отвлекающих замедлений. Не забывайте тестировать свои изменения на локальном окружении, прежде чем внедрять их на живом сайте, чтобы избежать непредвиденных проблем.