WordPress Plugin Daten automatisch deinstallieren

Die Zeiten ändern sich.

Dieser Beitrag scheint älter als 15 Jahre zu sein – eine lange Zeit im Internet. Der Inhalt ist vielleicht veraltet.

Plugins löschen
Ab der Version 2.7 von WordPress wird es die Möglichkeit geben, dass man ein Plugin aus dem Backend heraus löschen kann, siehe Version 2.7 Info. Um das Löschen der Daten auch in der Datenbank zu realisieren, müssen die Autoren der Plugins einige Voraussetzungen schaffen. Damit der eine oder andere diese Funktion in sein Plugin aufnimmt oder für die Zukunft im Hinterkopf abspeichert, zeige ich, wie man dies realisiert.

Wer schon im Vorfeld eine Uninstall-Funktion im Plugin hatte, der muss nicht sonderlich viel umstellen. Für Interessierende, die Funktionen zum Deinstallieren finden sich in wp-admin/includes/plugin.php

  1. is_uninstallable_plugin($plugin)
  2. uninstall_plugin($plugin)

und der zugehörige Hook in wp-includes/plugin.php

  1. register_uninstall_hook($file, $callback)

Um nun das Plugin mit der Möglichkeit zu bereichern, können zwei Möglichkeiten genutzt werden.

  1. Eine Datei mit der Bezeichnunguninstall.php muss im Plugin vorliegen.
  2. Der Hook zur Deinstallation register_uninstall_hook muss angesprochen werden.

Bis zu Version 2.7 von WordPress konnte man ebenfalls die Daten aus der Datenbank löschen, allerdings nur wenn man das Plugin deaktiviert (Hook register_deactivation_hook()) oder mit Hilfe eines Formulars. Sollte dabei eine Funktion genutzt worden sein, dann kann diese auch weiterhin dafür einspringen. Lediglich das Ansprechen hat sich geändert.
Um auch andere Versionen von WordPress zu unterstützen, empfiehlt es sich die Konstante WP_UNINSTALL_PLUGIN abzufragen, denn diese steht erst ab Version 2.7 zu diesem Zweck bereit. Alternativ kann man auch den Hook register_uninstall_hook() nutzen, da dieser zur Funktion via Hook notwendig ist. Beide Möglichkeiten habe ich im folgenden Beispielen hinterlegt.

Plugins löschen

Die folgenden Funktion soll beispielhaft in einem Plugin stehen und löscht den Eintrag example aus der Datenbank Tabelle options.


/**
 * Delete options in database
 */
function example_deinstall() {

	delete_option('example');
}

via Datei uninstall.php

Die einfachste Möglichkeit ist das Anlegen der Datei unistall.php mit den entsprechenden Einträgen zum Löschen von Daten in der Tabelle options.


delete_option('example');

Um ein Fehlverhalten in älteren Versionen von WordPress vorzubeugen, empfiehlt sich hier der Einsatz der Konstante. Ist diese nicht definiert, dann findet im Beispiel ein einfacher Abruch statt.


if ( !defined('WP_UNINSTALL_PLUGIN') ) {
    exit();
}
delete_option('example');

via Hook register_uninstall_hook()

Alternativ kann man die Deinstallation auch per Hook registrieren, so dass man nicht auf die Datei angewiesen ist und man optional einfacher eine Möglichkeit der Deinstallation in das Plugin integrieren kann. Dazu steht der Hook register_uninstall_hook() zur Verfügung.


 /**
 * Check for hook
 */
if ( function_exists('register_uninstall_hook') )
	register_uninstall_hook(__FILE__, 'example_deinstall');

 /**
 * Delete options in database
 */
function example_deinstall() {

	delete_option('example');
}

Die Möglichkeit, dass man direkt im Backend von WordPress Plugins löschen kann, macht es sicher dem Nutzer ein wenig leichter, seine Installation von unnötigen Daten zu befreien. Nun müssen die Autoren von Plugins diese Lösung noch unterstützen und die Tabell options wird es sicher danken.

Von Frank Bültge

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.