Der Vorteil uninstall.php
und der Grund für die Einführung besteht darin, dass Sie Ihren Deinstallationscode vom Rest des Plugin-Codes isolieren können. Dies bedeutet, dass Ihr gesamtes Plugin bei der Deinstallation nicht geladen werden muss. Dies minimiert die Wahrscheinlichkeit, dass Ihr Plugin während der Deinstallation versehentlich Code ausführt, der nur ausgeführt werden soll, wenn das Plugin aktiv ist. Im Allgemeinen sollten Sie jedoch ohnehin keinen beliebigen Code in Ihren Plugin-Dateien ausführen. Fast alles sollte nur ausgeführt werden, wenn dies durch einen Hook ausgelöst wird.
Aus den im ursprünglichen Commit enthaltenen Dokumenten :
Das Plugin sollte bei der Registrierung des Deinstallations-Hooks keinen beliebigen Code außerhalb von Funktionen ausführen. Um mit dem Hook ausgeführt werden zu können, muss das Plugin enthalten sein. Dies bedeutet, dass Code, der außerhalb einer Funktion liegt, während des Deinstallationsvorgangs ausgeführt wird. Das Plugin sollte den Deinstallationsprozess nicht behindern.
Wenn das Plugin nicht geschrieben werden kann, ohne dass Code innerhalb des Plugins ausgeführt wird, sollte das Plugin eine Datei mit dem Namen 'uninstall.php' im Basis-Plugin-Ordner erstellen ...
TL; DR: Ihr Plugin sollte wirklich in so strukturiert sein , dass sie nicht haben , um den Einsatz unisntall.php
, aber es trotzdem mit fügt einen zusätzlichen Schutz gegen versehentliches laufen die Dinge bei der Deinstallation.
In einigen Fällen müssen Sie natürlich möglicherweise Teile Ihres Plugins laden, um es trotzdem ordnungsgemäß zu deinstallieren. Wenn Sie jedoch uninstall.php
diese Dateien verwenden, ist dies eine bewusste Entscheidung, die Sie treffen. Daher ist es schwieriger, versehentlich eine Datei Ihres Plugins zu laden, in der beliebiger Code ausgeführt wird.
Das einzige Mal, dass ich die register_uninstall_hook()
Methode verwenden würde, wäre ein sehr einfaches Plugin für einzelne Dateien, in dem der gesamte Code in einer einzigen Klasse gekapselt war.
Beachten Sie, dass uninstall_plugin()
der Aktions-Hook pre_uninstall_plugin
und uninstall_{$plugin_file}
[Bearbeiten: uninstall_{$plugin_file}
wird nur ausgeführt, wenn er register_uninstall_hook()
verwendet wird] ausgeführt wird , unabhängig davon, welche Methode Sie verwenden. (Siehe Ticket Nr. 34569. )