WordPress Plugin-Updates bei einem spezifischen Plugin verhindern

Wordpress Plugin Updates mit PHP-Code verhindern

Heute musste ich in einem Blog eines Kunden ein Plugin anpassen, damit es optisch zur Webseite passt und auch eine deutsche Ausgabe hat. Nun war das Problem, dass der Kunde immer fleißig seine Updates im WordPress-Admin macht.

An sich eine lobenswerte Sache, aber wenn er das Update zu diesem Plugin einspielt, sind meine ganzen Anpassungen in der Programmierung überschrieben und weg. Das soll natürlich nicht passieren. Ich bin aber realistisch genug, um zu wissen, das hier ein Hinweis darauf niemanden davon abhält, zukünftige Updates zu erledigen. Aus dem Grund muss hier eine Lösung her, die das Update im WP-Admin am besten gar nicht erst anzeigt.

Mit dem Plugin "Disable All WordPress Updates" werden alle Updates verhindert – sogar die des WordPress-Core.

Mit dem Plugin "Disable All WordPress Updates" werden alle Updates verhindert – sogar die des WordPress-Core.

Lösung 1: alle WordPress-Updates mit Plugin unterbinden

Der erste Weg, den man hier wählen kann, ist das Plugin "Disable All WordPress Updates", das man im WordPress-Repository findet. Es ist sozusagen die "Kanone", mit dem wir auf den "Spatzen" schießen würden, denn eigentlich möchten wir ja nur die Updates von einem Plugin verhindern.

Das Plugin "Disable All WordPress Updates" verhindert jedoch nur nicht alle Plugin-Updates, sondern auch die aller installierten Themes und die von WordPress selbst. Das ist auf Dauer natürlich ein hohes Sicherheitsrisiko, das ich dem Kunden nicht antun wollte.

Lösung 2: nur Updates zu spezifischem Plugin deaktivieren

In meinem Fall sollte dem Kunden weiterhin erlaubt sein, alle Plugins durchzuführen, aber das eine Plugin, das ich angepasst habe, müsste aus den Updates ausgeklammert werden. Wenn es irgendwann ein größeres Update des Plugins gibt, würde ich dieses manuell einspielen und die Anpassungen nochmals vornehmen. Das wird irgendwann wichtig, damit das Plugin auch mit größeren Versionssprüngen von WordPress zurechtkommt.

Für den Test des Codes habe ich mir das Plugin "Ad Inserter" ausgesucht, das bei mir im WordPress-Blog gerade eine Aktualisierung angezeigt hatte.

Für den Test des Codes habe ich mir das Plugin "Ad Inserter" ausgesucht, das bei mir im WordPress-Blog gerade eine Aktualisierung angezeigt hatte.

Keine Änderung in der functions.php

Da der Kunde hier und da auch am Theme werkelt und sich eventuell in Kürze ein anderes Theme aussucht, war mein Plan die Lösungen auszuklammern, die mit einem Script in der functions.php arbeiten. Bei einem Theme-Wechsel wird die functions.php nicht automatisch übernommen und es wäre absehbar, das hier etwas schief geht. Mein Plan war, ein paar Zeilen Code in das individualisierte Plugin einzutragen, damit es keine Updates mehr abfragt und anzeigt.

Fündig geworden bin ich letztlich in diesem Thread von Stackoverflow, aus dem ich mir die folgenden Zeilen Code geholt habe:

// Deactivate Update Feature of this Plugin
add_filter('site_transient_update_plugins', 'remove_update_notification');
function remove_update_notification($value) {
unset($value->response[ plugin_basename(__FILE__) ]);
return $value;
}

Diese Codezeilen kopiert man in die Hauptdatei des Plugins, welche meistens nach diesem Schema im Ordner "wp-content/plugins/"zu finden ist:

name-des-plugins/name-des-plugins.php

Für den Test des Codes habe ich es bei mir mal mit dem Plugin "Ad-Inserter" ausprobiert, das gerade ein Update haben wollte. Im Screenshot seht ihr, wo ich den Code eingebaut habe.

Hier sieht man die Codezeilen, die ich in den oberen Bereich des Plugin-Codes kopiert habe.

Hier sieht man die Codezeilen, die ich in den oberen Bereich des Plugin-Codes kopiert habe.

Nach dem Einbau habe ich im WordPress-Admin die Liste der Plugins aufgerufen und siehe da: Das Plugin meldet keine verfügbare Aktualisierung mehr (obwohl es eine gibt). Die Sache funktioniert also ganz zuverlässig – bei mir getestet bis WordPress 5.4.1.

Nachdem der Code eingefügt ist, zeigt das Plugin im WordPress-Admin kein verfügbares Update mehr an.

Nachdem der Code eingefügt ist, zeigt das Plugin im WordPress-Admin kein verfügbares Update mehr an.

Mein Fazit

Das Schöne an der Lösung ist, dass man gezielt Aktualisierungen für bestimmte Plugins ausschließen kann und nicht die "Nuklear-Lösung" wählen muss, bei der alle Updates unterbunden werden. Möchte man die Updates von mehreren Plugins ausblenden, kopiert man den gleichen Code in die Hauptdatei jedes dieser Plugins.

Was mir bei dem Code besonders gut gefällt, ist die Tatsache, dass man ihn direkt so kopieren und einfügen kann. Bei anderen Lösungen muss man noch den Dateipfad und den Namen der PHP-Datei in den Code eintragen, damit es funktioniert. Hier wurde das mit der Funktion "plugin_basename" ausgelesen, was sehr komfortabel ist.


Wenn mein Beitrag geholfen hat und dir mein Blog unterstützenswert erscheint, würde ich mich über eine Hilfe per Steady oder Buy me a coffee sehr freuen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Alle News 1x pro Woche

Du magst die Artikel auf Sir Apfelot?
Dann trage dich in meinen wöchentlichen Newsletter ein.