it-swarm.com.de

Deaktivieren Sie die automatische Aktualisierung für einzelne Plugins

Ich habe ein Plugin, von dem ich weiß, dass ich es niemals aktualisieren möchte. Mir ist bewusst, dass dies NICHT die beste Vorgehensweise ist, aber in diesem Fall muss sie durchgeführt werden. Gibt es eine Möglichkeit zu verhindern, dass WordPress mich auffordert, ein bestimmtes Plugin automatisch zu aktualisieren?.

10
GavinR

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

7
GavinR

du platzierst dies in die functions.php deines 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' );
11
Tara

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 bei stackexchange einige andere Posts zu diesem Problem gefunden und eine Funktion gefunden, die Ihre Plugin-Referenzen durchläuft und zuerst prüft, ob es bereits einen Verweis auf dieses Plugin gibt (um das PHPzu vermeiden). _ Warnung für Nicht-Objekte (falls es keines gibt) und falls es ein Objekt gibt, wird es genau wie der ursprüngliche Code deaktiviert.

Ich habe keine Komponententests durchgeführt, aber bei jedem Update/jeder Installation von Plugins wurden PHP Warnungen angezeigt, 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' );
3
thetrickster

Während Taras Antwort gut funktioniert, muss der Programmierer den Pfad zur Haupt-Plugin-Datei eingeben. Sie funktioniert nur, wenn das jeweilige Thema aktiviert ist. Eine alternative Lösung könnte so 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 .php des Plugins, das Sie deaktivieren möchten. Wenn Sie dies auf Ihrer Site mehrmals verwenden möchten, ändern Sie den _1234 im Filter- und Funktionsnamen in einen anderen Satz von Zufallszahlen, um doppelte Funktionsnamen zu vermeiden.

Wenn Sie Aktualisierungen für ein bestimmtes Plugin deaktivieren, liegt dies wahrscheinlich daran, dass Sie es aus irgendeinem Grund bearbeiten. Das Hinzufügen einiger zusätzlicher Zeilen zu diesem Plugin sollte daher sinnvoll sein.

3
emc

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

1
anmari

Eine höhere Version in der Haupt-Plugin-Datei ist am besten, wenn Sie einen speziellen Hack hinzufügen. Es nennt null/undefinierte Nummer und wird für immer in dieser Version bleiben. Beispiel:

Ausführung:

Dadurch wird sichergestellt, dass 2100 nach 9.9.9 oder so etwas nicht mehr aktualisiert wird. Es ist ein einfacher Ansatz für verlassene Plugins, die manchmal ersetzt werden.

0
Patryk Padus

Sie können Aktualisierungen verhindern, indem Sie einfach den Plugin-Ordner umbenennen (oder im Falle 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
nydame

Ich habe eine Site mit NPCs Implementierung von Tara-Code-Snip geerbt, die Fehler nach 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 beheben:

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, so dass Sie es bearbeiten können, und dass es wahrscheinlich nicht durch Updates überschrieben wird, weil der springende Punkt darin besteht, Sie zu behalten von der Aktualisierung des Plugins.

0
Phreditor