Вимкніть автоматичне оновлення для одного плагіна


10

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


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

Чи коригування номерів версій все ж спрацює, якщо плагін оновить номери версій на щось подібне 1.10.1?
emc

Відповіді:


11

ви розміщуєте це в функції теми.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.