Отключить автоматическое обновление для одного плагина


10

У меня есть плагин, который я не хочу обновлять. Я знаю, что это НЕ лучшая практика, но в этом случае это должно быть сделано. Есть ли способ, чтобы WordPress не заставлял меня автоматически обновлять конкретный плагин (но все равно, как обычно, для всех остальных плагинов).


6
Увеличьте номер версии внутри основного файла плагина .. например. 99.9... а также внесите те же изменения в файл readme для хорошей меры (хотя я не думаю, что это действительно необходимо) ..
t31os

Будет ли работать корректировка номеров версий, если плагин обновит свои номера версий до чего-то вроде 1.10.1?
ЕМС

Ответы:


11

Вы помещаете это в functions.php вашей темы

// Disable update notification for individual plugins - see my example of plugin block-spam-by-math-reloaded as to how to use this function

function filter_plugin_updates( $value ) {
    unset( $value->response['plugin-folder-name/plugin-file-name.php'] );    
    return $value;
}

add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

Я не понимаю, почему в вашем ответе есть код кнопки Google +1 ... Вероятно, осталось больше ...
brasofilo

осталось Сожалею.
Тара

3
Это решение выдает предупреждение при включении или отключении любого другого плагина. Warning: Attempt to modify property of non-object in /home/XXXXXX/public_html/wp-content/themes/XXXXXXX/custom-functions.php on line 15
Гурунг

gurung, на какой версии WP вы это используете?
fedmich

7

T31os ответил правильно: увеличьте номер версии внутри основного файла плагина .. например. 99.9 ... а также внести те же изменения в файл readme для хорошей меры (хотя я не думаю, что это на самом деле требуется) .. - t31os


5

Хотя ответ Тары работает хорошо, он требует, чтобы программист вводил путь к основному файлу плагина, и он функционален только тогда, когда эта конкретная тема включена. Альтернативное решение может выглядеть так:

add_filter('site_transient_update_plugins', 'remove_update_notification_1234');
function remove_update_notification_1234($value) {
    unset($value->response[ plugin_basename(__FILE__) ]);
    return $value;
}

однострочная версия:

add_filter('site_transient_update_plugins', function ($value) { unset($value->response[ plugin_basename(__FILE__) ]);return $value; });

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

Скорее всего, если вы отключаете обновления для определенного плагина, это потому, что вы редактируете его по какой-то причине ... поэтому добавление нескольких дополнительных строк в этот плагин должно быть жизнеспособным.


1
На мой взгляд, это лучший ответ, особенно если вы отключаете обновления, потому что сами редактируете плагин. Спасибо, ЭМС.
Натан

3

Я получал предупреждения PHP, такие как «gurung», упомянутые выше, когда устанавливал или обновлял другие плагины, когда использовал этот код. Я видел предупреждения PHP в WP 4.3.1.

Я нашел несколько других сообщений на stackexchange об этой проблеме, и я придумал функцию, которая просматривает ваш массив ссылок на плагин и сначала проверяет, есть ли уже ссылка на этот плагин (чтобы избежать предупреждения PHP о не-объектах если его нет), и если есть объект, он будет сброшен, как и исходный код.

Я не проводил модульные тесты, но получал предупреждения PHP при каждом обновлении / установке плагинов, и теперь я их не вижу.

function filter_plugin_updates( $value ) {

  // Add references to plugins you want to disable update notices for in the $plugins array
  $plugins = array(
    'k-elements/setup.php'
  );

  foreach( $plugins as $plugin ) {
    if ( isset( $value->response[$plugin] ) ) {
      unset( $value->response[$plugin] );
    }
  }

  return $value;

}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

1

Или вы просто переименовываете его, чтобы он не совпадал с плагином.
Вам нужно переименовать не только папку, но и заголовок readme и плагина.


1

Я унаследовал сайт с npc-реализацией фрагмента кода Тары, который выдавал ошибки на комментарий гурунга. Гнал меня с ума. Я не решался редактировать код в плагине, пока не понял, что снайпер в любом случае под заказ.

Чтобы устранить ошибки, измените это:

unset($value->response[ plugin_basename(__FILE__) ]);

к этому:

if($value) {
    unset($value->response[ plugin_basename(__FILE__) ]);
}

Для некоторых это может быть очевидно, но суть в том, что он уже настроен, так что вы можете редактировать его, и, вероятно, он не будет перезаписан обновлениями, потому что весь смысл в том, чтобы удержать вас от обновления плагина.


0

Вы можете предотвратить обновления, просто переименовав папку плагина (или, в случае однофайлового плагина, переименовав этот файл PHP). Это, безусловно, самое простое решение. Кроме того, этот подход делает тот факт, что вы изменили код, прозрачным для будущих разработчиков, в том числе и для будущих пользователей.


0

Более высокая версия в основном файле плагина лучше, но только при добавлении специального хака. Он вызывает нулевой / неопределенный номер и останется в этой версии. Пример:

Версия:

Это гарантирует, что в 2100 году он не будет обновляться после 9.9.9 или чего-то подобного. Это простой подход для заброшенных плагинов, которые когда-нибудь будут заменены.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.