Иногда бывает полезно отключить обновления определенных модулей в WordPress. Это могут быть темы, плагины, виджеты и т.п. и часто такая необходимость возникает, когда вы сдаете проект клиенту на WordPress и где вы не всегда на месте, чтобы разъяснять или справлять все ньюансы, которые могут возникнуть в связи новыми обновлениями модулей.
Запретить обновление темы
Рассмотрим отключение обновлений тем. Тут привести 3 способа, как это сделать.
Способ 1.
Суть первого способа заключается в изменении файла стилей. Да да, именно файла стилей — style.css. В начале этого файла, пишутся некоторые параметры, например — название темы, автор и нужная нам версия.
Выглядит такая строка примерно так — Version: 1.0, смотрите внимательно. она где-то в начале. Так вот, чтобы отключить обновления, Вам просто нужно изменить версию на другую, которая будет побольше, например так — Version: 999.0.
Теперь получается, что любая версия будет меньше указанной, а значит не актуальной и тема не будет обновляться.
Способ 2.
Второй способ потребует от Вас тоже небольшого вмешательства в код темы, а именно в файл пользовательских функций — functions.php. Открываем его для редактирования, а потом в самый конец перед закрывающим тегом PHP — ?>, если такого нет, то просто в конец, добавляем такие вот функции.
// отключаем обновление тем remove_action( 'load-update-core.php', 'wp_update_themes' ); add_filter( 'pre_site_transient_update_themes', '__return_null' ); // отключаем авто обновления add_filter( 'auto_update_theme', '__return_false' ); // спрячем имеющиеся уведомления add_action('admin_menu','hide_admin_notices'); function hide_admin_notices() { remove_action( 'admin_notices', 'update_nag', 3 ); }
По комментариям видно что мы отключаем сразу несколько параметров — обновление тем, авто обновления и уведомления о надобности обновится.
Способ 3.
Последний способ, наверное самый простой, но требует установки плагина. Скачивает с сайта WordPress плагин — Easy Updates Manager или WordPress Theme Updates, ну и подобные им, которые сделают все за Вас.
Как по мне, то лучше выбрать один из ручных методов, ведь использование плагинов лишний раз нагружает Ваш WordPress, хоть и не сильно, но все же.
Запретить обновление плагина
В некоторых случаях может оказаться, что обновлять плагин вам не нужно. Это может произойти, если вы самостоятельно внесли доработки и изменения в код плагина. Тогда обновление перезапишет все ваши правки. Либо же если авторы плагина в чем-то изменили концепцию, и новая версия вас больше не устраивает. В моем случае так случилось с замечательным плагином NextGen Gallery, который после обновления до версии 2 стал неповоротливым и тяжело модифицируемым.
Способ 1.
Версия плагина прописывается в начале его главного файла. Открываем список плагинов, выбираем нужный и нажимаем «Изменить».
<?php /* Plugin Name: NextGEN Gallery Plugin URI: http://www.nextgen-gallery.com/ Description: A NextGENeration Photo Gallery for WordPress Author: Photocrati Author URI: http://www.photocrati.com/ Version: 1.9.13
Если заменить значение «Version:» на большое число, например 99.99, то проверка обновлений будет сообщать, что установленная версия новее, и не будет предлагать обновиться.
Способ 2.
Пропишем фильтр, позволяющий блокировать обновления конкретных плагинов централизованно. Для этого нужно в файл wp-config.php добавить массив:
<?php $DISABLE_UPDATE = array( 'nextgen-gallery', 'nospamnx', 'другие-плагины');
Где значением элемента массива является название директории, в которой расположен плагин, или его название, если плагин не имеет своей категории (состоит из одного файла).
Затем в файл functions.php текущей темы следует добавить код, который будет обрабатывать данный массив и запрещать для указанных плагинов обновления:
<?php // запрет обновления выборочных плагинов 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' );
Однако имейте ввиду, с обновлением самого WordPress старые версии плагинов или тем могут оказаться несовместимыми и перестать работать, поэтому отключать обновления следует с осторожностью.
Источники: