Cum să dezactivezi actualizarea automată pentru un singur plugin în WordPress
Am un plugin pe care știu că nu vreau să-l actualizez niciodată. Sunt conștient că aceasta NU este cea mai bună practică, dar în acest caz trebuie să o fac. Există vreo modalitate de a opri WordPress să mă avertizeze să actualizez automat un anumit plugin (dar să primesc în continuare notificări normale pentru toate celelalte plugin-uri).

introdu acest cod în functions.php al temei tale
// Dezactivează notificările de actualizare pentru pluginuri individuale - vezi exemplul meu pentru pluginul block-spam-by-math-reloaded pentru a înțelege cum să folosești această funcție
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' );

Nu înțeleg de ce există un cod pentru butonul Google +1 în răspunsul tău... Probabil a rămas din greșeală...

Această soluție aruncă un avertisment atunci când activezi sau dezactivezi orice alt plugin. Warning: Attempt to modify property of non-object in /home/XXXXXX/public_html/wp-content/themes/XXXXXXX/custom-functions.php on line 15

Deși răspunsul lui Tara funcționează bine, necesită ca programatorul să introducă calea către fișierul principal al plugin-ului și este funcțional doar cât timp acea temă specifică este activată. O soluție alternativă ar putea arăta astfel:
add_filter('site_transient_update_plugins', 'remove_update_notification_1234');
function remove_update_notification_1234($value) {
unset($value->response[ plugin_basename(__FILE__) ]);
return $value;
}
versiunea pe o singură linie:
add_filter('site_transient_update_plugins', function ($value) { unset($value->response[ plugin_basename(__FILE__) ]);return $value; });
Plasați acest cod în partea de sus a fișierului principal .php
al plugin-ului pentru care doriți să dezactivați actualizările. Dacă intenționați să utilizați acest cod de mai multe ori pe site, schimbați _1234
din numele filtrului și funcției cu un alt set de numere aleatoare pentru a evita nume de funcții duplicate.
Este probabil ca, dacă dezactivați actualizările pentru un anumit plugin, este din cauză că îl modificați din anumite motive... așadar, adăugarea a câteva linii suplimentare în acel plugin ar trebui să fie fezabilă.

Am primit avertismente PHP precum 'gurung' menționat mai sus atunci când instalam sau actualizam alte plugin-uri în timp ce foloseam acest cod. Am văzut avertismentele PHP în WP 4.3.1.
Am găsit alte postări pe stackexchange despre această problemă și am creat o funcție care parcurge array-ul tău de referințe de plugin-uri și verifică mai întâi dacă există deja o referință la acel plugin (pentru a evita avertismentul PHP pentru non-obiecte dacă nu există unul) și dacă există un obiect, îl va elimina exact ca în codul original.
Nu am făcut teste unitare, dar primeam avertismente PHP la fiecare actualizare/instalare de plugin-uri și acum nu le mai văd.
function filter_plugin_updates( $value ) {
// Adaugă referințe la plugin-uri pentru care vrei să dezactivezi notificările de actualizare în array-ul $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' );

Am moștenit un site cu implementarea codului lui Tara făcută de NPC, care a generat erori conform comentariului lui Gurung. M-a înnebunit. Am ezitat să editez codul într-un plugin, până când am realizat că snippet-ul este personalizat oricum.
Pentru a elimina erorile, schimbați aceasta:
unset($value->response[ plugin_basename(__FILE__) ]);
în aceasta:
if($value) {
unset($value->response[ plugin_basename(__FILE__) ]);
}
Poate fi evident pentru unii, dar cheia este că este deja personalizat, așa că îl puteți edita și probabil nu va fi suprascris de actualizări, deoarece scopul întreg este să vă împiedice să actualizați pluginul.

Puteți preveni actualizările pur și simplu prin redenumirea folderului pluginului (sau, în cazul unui plugin cu un singur fișier, prin redenumirea acelui fișier PHP). Aceasta este, de departe, cea mai simplă soluție. În plus, această abordare face ca faptul că ați modificat codul să fie transparent pentru viitorii dezvoltatori, inclusiv pentru "viitorul tău".

O versiune mai mare în fișierul principal al pluginului este cea mai bună, dar doar atunci când adăugați un hack special. Aceasta apelează un număr nedefinit/null și va rămâne apoi în acea versiune. Exemplu:
Versiune:
Aceasta va asigura că în anul 2100 nu se va actualiza după 9.9.9 sau ceva similar. Este o abordare simplă pentru pluginuri abandonate care la un moment dat vor fi înlocuite.
