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

9 авг. 2011 г., 03:02:21
Просмотры: 16.7K
Голосов: 12

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

2
Комментарии

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

t31os t31os
9 авг. 2011 г. 03:12:24

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

emc emc
25 сент. 2013 г. 22:33:21
Все ответы на вопрос 8
4
12

добавьте это в functions.php вашей темы

// Отключение уведомлений об обновлениях для отдельных плагинов - см. мой пример с плагином block-spam-by-math-reloaded, как использовать эту функцию

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' );
9 авг. 2011 г. 03:37:41
Комментарии

Я не понимаю, почему в вашем ответе есть код кнопки Google +1... Наверное, осталось с прошлого раза...

brasofilo brasofilo
29 июн. 2012 г. 22:38:18

Осталось. Извините.

Tara Tara
1 июл. 2012 г. 00:05:48

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

gurung gurung
11 янв. 2014 г. 05:58:03

gurung, какую версию WP вы используете для этого?

fedmich fedmich
17 февр. 2015 г. 18:33:27
1
10

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

9 авг. 2011 г. 18:42:43
Комментарии

2022 год, и всё ещё работает! спасибо

Sid Sid
23 мар. 2022 г. 13:53:08
1

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

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 в названии фильтра и функции на другой набор случайных чисел, чтобы избежать дублирования имён функций.

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

25 сент. 2013 г. 22:35:19
Комментарии

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

Nathan Nathan
11 мая 2018 г. 18:55:46
0

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

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

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

function filter_plugin_updates( $value ) {

  // Добавьте ссылки на плагины, для которых хотите отключить уведомления об обновлениях, в массив $plugins
  $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' );
21 сент. 2015 г. 19:02:59
0

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

9 авг. 2011 г. 04:25:29
0

Мне достался сайт с реализацией кода от Тары через NPC, которая вызывала ошибки, как отметил Гурунг. Это сводило меня с ума. Я не решался редактировать код в плагине, пока не понял, что этот сниппет и так кастомный.

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

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

на это:

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

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

17 дек. 2015 г. 23:44:56
0

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

25 мар. 2019 г. 00:44:18
0

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

Version:

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

18 июн. 2019 г. 21:42:34