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)?


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' );

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


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.


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' );

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.


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.


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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.