Einstellungen beim Umbenennen des Plugin-Verzeichnisses


Frage: Wenn fehlerhaft programmierte Plugins eine WordPress-Website unbrauchbar machen, soll das Plugin-Verzeichnis wp-content/plugins umbenannt werden. Aber was passiert dabei eigentlich mit den Plugin-Einstellungen?

Wer ein Plugin installiert, speichert meist damit auch Daten in der Datenbank – entweder in der Tabelle wp_options oder sogar in eigenen Tabellen, die das Plugin anlegt. Wird das Plugin gelöscht, stellt sich die Frage, was mit diesen Daten passieren soll.

Das Plugin Handbuch, Referenz für alle Plugins, die im WordPress Plugin Repository aufgenommen werden sollen, hat für die Deinstallation eine klare Anweisung: Plugins sollen eine Datei uninstall.php verwenden, in der Funktionen enthalten sind, um die Datenbankeinträge bzw. -tabellen wieder zu löschen. Alternativ kann auch die Funktion `register_uninstall_hook()` verwendet werden.

Bei einigen Plugins ist mir aufgefallen, dass sie zusätzlich ein Optionsfeld anbieten, mit dem der Anwender auswählen kann, ob die Plugin-bezogenen Daten gelöscht werden sollen. Das erinnert zwar ein wenig an das Kleingedruckte in komplizierten Versicherungsverträgen, scheint aber beim Plugin Review durchgewunken zu werden.

Um zur eigentlichen Frage zurück zu kommen: Etwas anders sieht es aus, wenn der Anwender das Plugin-Verzeichnis umbenennt, weil ihn gerade eines der installierten Plugins ausgesperrt hat. Meldet sich der Benutzer anschließend im Back End an, prüft WordPress die Liste der installierten Plugins, findet sie nicht, gerät in Panik (OK, nicht wirklich. Eigentlich bleibt WordPress immer cool und deshalb mögen wir es ja auch so.) und deaktiviert die Plugins vorsorglich, damit kein Schaden entsteht. Da WordPress in diesem Moment aber auch nicht mehr auf die Datei uninstall.php des Plugins (bzw. die Funktion, die an den register_uninstall_hook gebunden ist) zurückgreifen kann, seufzt es einmal tief durch und … lässt die Daten unverändert in der Datenbank stehen. Wird nun der Plugin-Ordner wieder auf seinen ursprünglichen Namen zurückgesetzt und das Plugin installiert, verwendet es die Daten aus der vorherigen Installation als wäre nichts geschehen.

Was aber, wenn der Benutzer trotzdem die Daten in der Datenbank entfernen möchte? Einige Plugins verstecken das Kontrollkästchen, mit dem die Löschung durchgeführt werden kann, wie gesagt so geschickt, dass selbst erfahrene Nutzer dreimal hinschauen, Google bemühen und alchemistische Formeln aufsagen müssten, um die Datenbankeinträge dauerhaft loszuwerden. Unter dem Suchbegriff „Orphaned“ findet man aber im Plugin-Repository diverse Plugins, die nach verwaisten Datenbankeinträgen suchen und eine Löschung mehr oder weniger komfortabel anbieten.