Wyłącz automatyczną aktualizację dla pojedynczej wtyczki

10

Mam wtyczkę, o której wiem, że nigdy nie chcę aktualizować. Wiem, że to NIE jest najlepsza praktyka, ale w tym przypadku należy to zrobić. Czy jest jakiś sposób, aby powstrzymać WordPressa od monitowania mnie o automatyczną aktualizację konkretnej wtyczki (ale nadal alarmuje normalnie dla wszystkich innych wtyczek).

GavinR
źródło
6
Zwiększ numer wersji w głównym pliku wtyczki .. np. 99.9... i dla pewności dokonaj tej samej zmiany w pliku readme (choć nie sądzę, żeby to rzeczywiście było wymagane) ..
t31os
Czy dostosowanie numerów wersji będzie nadal działać, jeśli wtyczka zaktualizuje numery wersji do czegoś podobnego 1.10.1?
emc

Odpowiedzi:

11

umieścisz to w pliku 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' );
Tara
źródło
Nie rozumiem, dlaczego w twojej odpowiedzi jest kod przycisku Google +1 ... Prawdopodobnie zostało ...
brasofilo
pozostawione. Przepraszam.
Tara
3
To rozwiązanie wyświetla ostrzeżenie podczas włączania lub wyłączania dowolnej innej wtyczki. 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 na jakiej wersji WP używasz tego?
fedmich
7

Odpowiedź T31os była prawidłowa: Zwiększ numer wersji w głównym pliku wtyczki .. np. 99,9 ... i dla pewności dokonaj tej samej zmiany w pliku readme (choć nie sądzę, żeby to rzeczywiście było wymagane) .. - t31os

GavinR
źródło
5

Chociaż odpowiedź Tary działa dobrze, programista musi wprowadzić ścieżkę do głównego pliku wtyczki i działa tylko wtedy, gdy ten konkretny motyw jest włączony. Alternatywne rozwiązanie może wyglądać następująco:

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

wersja jednowierszowa:

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

Umieść ten kod na górze głównego .phppliku wtyczki, którą chcesz wyłączyć. Jeśli planujesz używać tego więcej niż raz w swojej witrynie, zmień nazwę _1234filtra i funkcji na inny zestaw liczb losowych, aby uniknąć powielania nazw funkcji.

Możliwe, że jeśli wyłączasz aktualizacje dla określonej wtyczki, dzieje się tak, ponieważ z jakiegoś powodu ją edytujesz, więc dodanie kilku dodatkowych wierszy do tej wtyczki powinno być wykonalne.

emc
źródło
1
Moim zdaniem jest to najlepsza odpowiedź, szczególnie jeśli wyłączasz aktualizacje, ponieważ sam edytujesz wtyczkę. Dzięki emc.
Nathan
3

Otrzymywałem ostrzeżenia PHP takie jak „gurung” wspomniane powyżej, kiedy instalowałem lub aktualizowałem inne wtyczki, kiedy korzystałem z tego kodu. Widziałem ostrzeżenia PHP w WP 4.3.1.

Znalazłem kilka innych postów na stosie wymiany na ten temat i wymyśliłem funkcję, która zapętla twoją tablicę referencji wtyczek i najpierw sprawdza, czy jest już odwołanie do tej wtyczki (aby uniknąć ostrzeżenia PHP o obiektach innych niż obiekty jeśli go nie ma) i jeśli istnieje obiekt, rozbroi go tak jak oryginalny kod.

Nie przeprowadzałem testów jednostkowych, ale otrzymywałem ostrzeżenia PHP przy każdej aktualizacji / instalacji wtyczek i teraz ich nie widzę.

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' );
oszust
źródło
1

Lub po prostu zmień nazwę, aby nie była to ta sama wtyczka.
Musisz zmienić nazwę nie tylko folderu, ale także nagłówka readme i wtyczki.

anmari
źródło
1

Odziedziczyłem witrynę z zaimplementowanym przez NPC kodem tara, który rzucał błędy na komentarz gurunga. Doprowadził mnie do szału. Wahałem się przed edycją kodu we wtyczce, dopóki nie zdałem sobie sprawy, że snajper i tak jest niestandardowy.

Aby wyeliminować błędy, zmień to:

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

do tego:

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

Dla niektórych może to być oczywiste, ale kluczem jest to, że jest już niestandardowy, więc możesz go edytować i prawdopodobnie nie zostaną one zastąpione aktualizacjami, ponieważ chodzi o to, aby powstrzymać cię od aktualizacji wtyczki.

Freditor
źródło
0

Możesz zapobiec aktualizacjom po prostu przez zmianę nazwy folderu wtyczki (lub, w przypadku wtyczki z jednym plikiem, zmianę nazwy tego pliku PHP). To zdecydowanie najprostsze rozwiązanie. Ponadto takie podejście sprawia, że ​​zmieniłeś kod w sposób przezroczysty dla przyszłych programistów, w tym „Future You”.

nydame
źródło
0

Najlepsza jest wersja wyższa w głównym pliku wtyczki, ale tylko po dodaniu specjalnego hacka. Wywołuje numer zerowy / niezdefiniowany, a następnie pozostanie w tej wersji. Przykład:

Wersja:

Zapewni to, że w 2100 r. Nie będzie aktualizowany po 9.9.9 lub coś w tym rodzaju. Jest to proste podejście do porzuconych wtyczek, które kiedyś zostaną zastąpione.

Patryk Padus
źródło