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

WordPress — постоянно развивающаяся и совершенствующаяся система управления сайтом. С одной стороны, это хорошо, так как появляется новый удобный функционал, повышается стабильность и безопасность. С другой — не очень, так как плагинам тоже постоянно нужно обновляться, чтобы соответствовать современной конструкции основной системы. Однако, не все разработчики плагинов постоянно следят за своим детищем — ну как обычно бывает? Загорелся идеей, сделал крутой плагин, выставил в паблик — все круто! Потом эта идея угасла, появилась новая и так далее, а за старым расширением уже никто не следит. Из-за этого часто случается, что при обновлении системы из-за какого-то старого давно не обновлявшегося плагина весь сайт перестает работать. Приходится искать ему замену, а это опять настройки, конфигурирование его под свои задачи и прочая канитель. Хорошо, если там не много всего ,а если это большая галерея с кучей фоток, что делать?

Есть два выхода из ситуации.

1. Отключить обновление WordPress совсем

Ну то есть, чтобы вообще система не обновлялась. Я бы так делать не стал, так как с каждым новым релизом залатываются дыры в безопасности, но если очень хочется, то можно в файл functions.php прописать следующий код:

add_filter('pre_site_transient_update_core',create_function('$a', "return null;"));
wp_clear_scheduled_hook('wp_version_check');

2. Отключить обновление всех плагинов

Более адекватный способ — отключить отключение плагинов, при этом оставив возможность обновляться самой системе WordPress. Типа, создали сайт один раз, настроили, как нужно, и все, пусть так и работает. Для блокировки запроса обновлений плагинов прописываем код в файл config.php:

define( 'DISALLOW_FILE_MODS', true );

либо в functions.php:

remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', create_function( '$a', "return null;" ) );
wp_clear_scheduled_hook( 'wp_update_plugins' );

3. Отключить обновление конкретного плагина

Но еще лучше — запретить обновляться один плагин, который в новой версии мешает работе всей системы. Как это понять? Ну как, вы обновили плагины, после чего сайт весь или его часть перестал работать — такое случается часто. Берем, откатываем базу данных на день назад — у большинства хостингов ведется ежедневный бэкап БД — после чего ищем то расширение, которое мешает работе. И потом ему запрещаем обновляться. Для этого добавляем в файл конфигурации код

$DISABLE_UPDATE = array( 'ДИРЕКТОРИЯ_ПЛАГИНА', 'другие_названия' );

где "ДИРЕКТОРИЯ_ПЛАГИНА" — это название папки, в которой он находится (внутри папки "wp-content/plugins")

И потом в функции добавляем:

// запрет обновления выборочных плагинов
function filter_plugin_updates( $update ) {
global $DISABLE_UPDATE; // см. wp-config.php
if( !is_array($DISABLE_UPDATE) || count($DISABLE_UPDATE) == 0 ){ return $update; }
foreach( $update->response as $name => $val ){
foreach( $DISABLE_UPDATE as $plugin ){
if( stripos($name,$plugin) !== false ){
unset( $update->response[ $name ] );
}
}
}
return $update;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );





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

4. Запрет обновлений шаблона

Наконец, еще один элемент, который постоянно хочет обновиться — это тема оформления. После апдейта ее также придется зачастую настраивать ручками с самого нуля, поэтому отключим эту возможность и ей. Для этого в файл функций добавляем:

remove_action('load-update-core.php','wp_update_themes');
add_filter('pre_site_transient_update_themes',create_function('$a', "return null;"));
wp_clear_scheduled_hook('wp_update_themes');

Поделись этой статьей с друзьями!

Это будет интересно прочитать:

Добавить комментарий