Deaktivieren Sie die automatische Aktualisierung für ein einzelnes Plugin

10

Ich habe ein Plugin, von dem ich weiß, dass ich es niemals aktualisieren möchte. Mir ist bewusst, dass dies KEINE bewährte Methode ist, aber in diesem Fall muss dies getan werden. Gibt es eine Möglichkeit zu verhindern, dass WordPress mich auffordert, ein bestimmtes Plugin automatisch zu aktualisieren (aber bei allen anderen Plugins wie gewohnt alarmiert)?

GavinR
quelle
6
Erhöhen Sie die Versionsnummer in der Hauptdatei des Plugins. 99.9... und nehmen Sie die gleiche Änderung auch in der Readme-Datei vor (obwohl ich nicht glaube, dass dies tatsächlich erforderlich ist).
t31os
Funktioniert das Anpassen der Versionsnummern weiterhin, wenn das Plugin seine Versionsnummern auf so etwas wie aktualisiert 1.10.1?
emc

Antworten:

11

Sie platzieren dies in der functions.php Ihres Themas

// 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
quelle
Ich verstehe nicht, warum Ihre Antwort einen Google + 1-Schaltflächencode enthält ... Wahrscheinlich ein
Rest
übrig bleiben. Es tut uns leid.
Tara
3
Diese Lösung gibt eine Warnung aus, während ein anderes Plugin aktiviert oder deaktiviert wird. 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 auf welcher version von WP verwendest du das?
Fedmich
7

Die Antwort von T31os war richtig: Erhöhen Sie die Versionsnummer in der Hauptdatei des Plugins. 99.9 ... und nehmen Sie die gleiche Änderung auch in der Readme-Datei vor (obwohl ich nicht glaube, dass dies tatsächlich erforderlich ist) .. - t31os

GavinR
quelle
4

Während Taras Antwort gut funktioniert, muss der Programmierer den Pfad zur Haupt-Plugin-Datei eingeben und sie ist nur funktionsfähig, wenn dieses bestimmte Thema aktiviert ist. Eine alternative Lösung könnte folgendermaßen aussehen:

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

Platzieren Sie diesen Code oben in der Hauptdatei .phpdes Plugins, das Sie deaktivieren möchten. Wenn Sie dies mehr als einmal auf Ihrer Site verwenden möchten, ändern Sie den _1234Filter- und Funktionsnamen in einen anderen Satz von Zufallszahlen, um doppelte Funktionsnamen zu vermeiden.

Wenn Sie Updates für ein bestimmtes Plugin deaktivieren, liegt dies wahrscheinlich daran, dass Sie es aus irgendeinem Grund bearbeiten. Daher sollte es sinnvoll sein, diesem Plugin ein paar zusätzliche Zeilen hinzuzufügen.

emc
quelle
1
Dies ist meiner Meinung nach die beste Antwort, insbesondere wenn Sie Updates deaktivieren, weil Sie das Plugin selbst bearbeiten. Danke emc.
Nathan
3

Ich habe PHP-Warnungen wie 'gurung' erhalten, als ich andere Plugins installiert oder aktualisiert habe, als ich diesen Code verwendet habe. Ich habe die PHP-Warnungen in WP 4.3.1 gesehen.

Ich habe auf stackexchange einige andere Beiträge zu diesem Problem gefunden und eine Funktion entwickelt, die Ihre Array-Plugin-Referenzen durchläuft und zunächst überprüft, ob bereits ein Verweis auf dieses Plugin vorhanden ist (um die PHP-Warnung für Nicht-Objekte zu vermeiden Wenn es keine gibt) und wenn es ein Objekt gibt, wird es genau wie der ursprüngliche Code deaktiviert.

Ich habe keine Unit-Tests durchgeführt, habe aber bei jedem Update / jeder Installation von Plugins PHP-Warnungen erhalten, und jetzt sehe ich sie nicht mehr.

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' );
Der Trickster
quelle
1

Oder Sie benennen es einfach um, damit es nicht dasselbe Plugin ist.
Sie müssen nicht nur den Ordner, sondern auch den Readme- und Plugin-Header umbenennen.

Anmari
quelle
1

Ich habe eine Site mit der Implementierung von Taras Code-Snip durch npc geerbt, die Fehler pro Gurungs Kommentar verursachte. Hat mich verrückt gemacht. Ich zögerte, Code in einem Plugin zu bearbeiten, bis mir klar wurde, dass der Snipper sowieso benutzerdefiniert ist.

Ändern Sie Folgendes, um die Fehler zu beseitigen:

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

dazu:

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

Für manche mag es offensichtlich sein, aber der Schlüssel ist, dass es bereits benutzerdefiniert ist, damit Sie es bearbeiten können, und es wird wahrscheinlich nicht durch Updates überschrieben, da der springende Punkt darin besteht, Sie davon abzuhalten, das Plugin zu aktualisieren.

Phreditor
quelle
0

Sie können Aktualisierungen verhindern, indem Sie einfach den Plugin-Ordner umbenennen (oder im Fall eines Plugins mit einer einzelnen Datei diese PHP-Datei umbenennen). Dies ist bei weitem die einfachste Lösung. Darüber hinaus macht dieser Ansatz die Tatsache, dass Sie den Code geändert haben, für zukünftige Entwickler, einschließlich "Future You", transparent.

Nydame
quelle
0

Eine höhere Version in der Haupt-Plugin-Datei ist am besten, aber nur, wenn ein spezieller Hack hinzugefügt wird. Es ruft eine null / undefinierte Nummer auf und bleibt dann in dieser Version. Beispiel:

Ausführung:

Dadurch wird sichergestellt, dass es im Jahr 2100 nach 9.9.9 oder ähnlichem nicht mehr aktualisiert wird. Es ist ein einfacher Ansatz für verlassene Plugins, der irgendwann ersetzt wird.

Patryk Padus
quelle