Warum einige WordPress-Plugins verwaiste Tabellen in der Datenbank hinterlassen
Veröffentlicht: 2016-06-23Bewertungen von WordPress-Plugins im Verzeichnis gibt es in allen Formen und Größen. Einige sind wirklich hilfreich, während andere kurz und auf den Punkt gebracht sind. Zum Beispiel diese Rezension eines kürzlich erschienenen WP eCommerce-Benutzers: „Ich habe es deinstalliert und es sind verwaiste Tabellen geblieben, die ich jetzt manuell bereinigen muss. Schlecht gemacht.“
Diese Art von Überprüfung kann leicht abgetan werden, aber Justin Sainton, Mitbegründer von WP eCommerce, hat auf die bestmögliche Weise reagiert. Er nimmt die Beschwerde des Benutzers zur Kenntnis und räumt ein, dass sie einen wichtigen Punkt ansprechen, den das Team besser dokumentieren könnte.
„Wir treffen eine sehr bewusste Entscheidung, Tabellen NICHT aus der Datenbank zu entfernen, wenn Leute WP eCommerce deinstallieren oder deaktivieren“, sagte Sainton.
„Eine Reihe von Gründen, denen wir im Laufe der Jahre begegnet sind, führen dazu, dass jemand sein Plugin deaktiviert und deinstalliert. Obwohl WordPress deutlich macht (wenn Sie eine Deinstallationsroutine haben), dass Sie Daten entfernen, ist dies ein Hinweis, der sehr leicht zu ignorieren ist, wenn Sie auf einer Mission sind, etwas zu tun.
„Aus diesen Gründen haben wir die bewusste Entscheidung getroffen, bei der Deinstallation keine der Daten zu entfernen (von denen viele für ein Unternehmen massiv schädlich wären, wenn sie unbeabsichtigt entfernt würden.“
Was sind verwaiste Tabellen?
Verwaiste Tabellen sind solche, die von Plugins hinterlassen werden, die bei der Deinstallation keine Tabellenbereinigung durchführen. Diese Tabellen enthalten oft Daten, darunter Formulare, Einträge, Einstellungen usw. Als ich beispielsweise GravityForms 2.0 auf der Testseite von The Tavern installierte, entdeckte ich, dass die Formulare, die ich vor sechs Jahren erstellt hatte, immer noch in der Datenbank vorhanden waren. Ich war nicht nur überrascht, sondern auch dankbar, dass ich GravityForms vor all den Jahren nicht gesagt hatte, die Daten zu entfernen.
Das Deaktivieren eines Plugins sollte keine Daten entfernen
Es gibt einen deutlichen Unterschied zwischen dem Deaktivieren eines Plugins und dessen Deinstallation. Das Deaktivieren eines Plugins geschieht häufiger als das Deinstallieren, hauptsächlich aufgrund des Fehlerbehebungsprozesses. Das Deaktivieren eines Plugins sollte keine Daten aus der Datenbank entfernen. Denken Sie darüber nach, wie frustrierend es wäre, ein Plugin zu deaktivieren und dann seine Einstellungen neu konfigurieren zu müssen?
Das Entfernen von Daten sollte ausdrücklich erfolgen
Stattdessen sollte das Entfernen von Daten eine explizite Aktion des Benutzers sein. Plugin-Entwickler, die Benutzern die Möglichkeit geben möchten, Daten bei der Deinstallation zu entfernen, können einen Deinstallations-Hook registrieren und eine Uninstall.php-Datei hinzufügen. Aus dem Referenzhandbuch für WordPress-Entwickler zu Uninstall.php.
Wenn das Plugin nicht ohne Ausführen von Code innerhalb des Plugins geschrieben werden kann, sollte das Plugin eine Datei mit dem Namen „uninstall.php“ im Basis-Plugin-Ordner erstellen. Diese Datei wird, falls vorhanden, während des Deinstallationsprozesses aufgerufen, wobei der Deinstallations-Hook umgangen wird. Das Plugin sollte bei Verwendung der 'uninstall.php' vor der Ausführung immer nach der Konstante 'WP_UNINSTALL_PLUGIN' suchen.
Entwickler, die diese Methode verwenden, sollten den Benutzern eine klare und prägnante Bestätigungsaufforderung bereitstellen, die davor warnt, dass Daten entfernt werden. Ein großartiges Beispiel für ein Plugin, das dies gut macht, ist GravityForms. Die Deinstallationsroutine ist vom Deaktivierungsprozess getrennt und die Warnung zeigt dem Benutzer deutlich, dass Daten verloren gehen.

In einem Kommentar, der 2013 in The Tavern veröffentlicht wurde, erklärte Carl Hancock, Gründer von RocketGenius, warum sie ihren eigenen Deinstallationsprozess anstelle der vorgeschlagenen Verwendung von Uninstall.php verwenden.

Zum Beispiel ist es üblich, dass wir Versionen von GF und Add-Ons auf unseren eigenen Testmaschinen über den Plugin-Manager deaktivieren und löschen und dann andere Versionen hochladen und installieren. Das bedeutet nicht, dass wir alle unsere Daten verlieren wollen. Wir möchten also auf keinen Fall, dass das passiert, wenn wir das Plugin im Plugin-Manager löschen.
Aus diesem Grund haben wir uns entschieden, unsere eigene Version einer vollständigen Deinstallation im Einstellungsbereich von Gravity Forms zu implementieren, die dem Endbenutzer deutlich macht, dass ALLE Daten gelöscht und ALLE Datenbanktabellen entfernt werden.
Verwaiste Tabellen wirken sich in der Regel nicht auf die Websiteleistung aus
Einige Leute glauben, dass zu viele verwaiste Tabellen die Leistung einer Website negativ beeinflussen können. Ich fragte Sainton, ob das wahr sei. „Im Allgemeinen nein“, antwortete Sainton.
„Es gibt sicherlich Fälle, in denen die Anzahl der in Ihrer Datenbank vorhandenen Tabellen möglicherweise die Leistung bestimmter Abfragen beeinträchtigen könnte – aber diese Arten von Abfragen sollten in den meisten Kontexten nie wirklich ausgeführt werden – sicherlich nicht in den meisten Kontexten, an denen WordPress-Entwickler interessiert wären .“
Verwaiste Tabellen und die darin enthaltenen Daten sind in der WordPress-Datenbank enthalten, etwas, in das die meisten durchschnittlichen Benutzer selten eintauchen. Die meisten sind sich wahrscheinlich nicht bewusst, wie viele Daten und Tabellen in ihrer Datenbank Bytes Platz beanspruchen. Es ist gut zu wissen, dass verwaiste Tabellen in den meisten Fällen die Leistung einer Website nicht beeinträchtigen und kein Grund zur Sorge sind.
Verwaiste Tabellen aufräumen
Es gibt eine Reihe von Plugins, die verwaiste Tabellen aus der Datenbank optimieren und bereinigen. Eine oberflächliche Suche im Plugin-Verzeichnis liefert die folgenden Ergebnisse.
- WP-Optimieren
- P3 (Plugin-Leistungsprofiler)
- WP-DBManager
- WP-Leistungspaket
Es gibt mehr Plugins als die, die ich hier aufgelistet habe, aber jedes interagiert und manipuliert die WordPress-Datenbank. Ich habe aus Erfahrung gelernt, dass Sie vor der Verwendung eines Plugins zur Datenbankreinigung und -optimierung ein vollständiges Backup Ihrer Website erstellen sollten.
Ich habe einmal ein Datenbankreinigungs-Plugin verwendet und obwohl es den Job gemacht hat, hat es Dinge entfernt, die ich nicht erwartet hatte, wie benutzerdefinierte Post-Status, die von Edit Flow generiert wurden.
Sollte der Deinstallationsprozess eine Plugin-Verzeichnisrichtlinie sein?
Wie der Einstellungslink auf der Plugin-Verwaltungsseite verwenden eine Reihe von Plugins im Verzeichnis keine Uninstall.php oder registrieren keinen Deinstallations-Hook. Ich bin der festen Überzeugung, dass jedes Plugin, das Daten zur Datenbank hinzufügt, eine einfache Möglichkeit bieten sollte, diese zu entfernen. Es ist eine Richtlinie, die den Benutzern zugute kommen würde, wenn sie durchgesetzt wird, indem sie dazu beiträgt, sauberere Datenbanken zu pflegen.
Entwickler, lassen Sie uns in den Kommentaren wissen, was Sie tun, damit Benutzer Daten aus der Datenbank entfernen können, nachdem sie von Ihrem Plugin hinzugefügt wurden.
