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. )
uninstall.php
Datei verwenden.uninstall_{$plugin_file}
Haken in beiden Fällen geirrt habe . @the_dramatist ist richtig, dass es nur ausgeführt wird, wennregister_uninstall_hook()
es verwendet wird. Beachten Sie jedoch, dass alles, was sich in die Deinstallation des Plugins einbinden möchte, wahrscheinlichpre_uninstall_plugin
stattdessen verwendet werden sollte (was tatsächlich für beide ausgeführt wird). Siehe Ticket Nr. 34569 . Ich würde das also nicht zu einem entscheidenden Faktor machen, für welchen von diesen Sie sich entscheiden.Nun, es kommt darauf an, was Sie wollen.
register_uninstall_hook()
Erstellt Hooks und wird ausgeführt, wenn auf denuninstall
Link geklickt wird. Das heißt, es wird tatsächlich ein Hook erstellt, der beim Klicken auf den Deinstallationslink aufgerufen wird. Angenommen, Sie haben ein Plugin entwickelt und basierend auf diesem Plugin möchten Sie andere Plugins erstellen. Diese Add-On-Plugins müssen für die Deinstallation des basierten Plugins ausgeführt werden. Dann ist dieser Hook hilfreich. Hier erhalten Sie einen vollständigen Überblick.Und
uninstall.php
ist ein generisches Deinstallationsprogramm für Ihr Plugin. Es wird bei der Deinstallation Ihres Plugins ausgelöst. Standardmäßig wird jedoch kein Hook bereitgestellt.Weitere Informationen finden Sie hier .
quelle
uninstall.php
. Aber ich sagte, dass es nicht standardmäßig bereitgestellt wird. Und für Referenzen schauen Sie bitte aufWordPress Plugin Development Boilerplate
oder irgendwelche Kesselplatten. Hier ist der Boilerplate-Link von Tom McFarlin, github.com/DevinVinson/WordPress-Plugin-Boilerplate . Und wenn Sie Hooks durch bereitstellen möchtenuninstall.php
, können Sie dies tun. Aber als Kontext seiner Frage bevorzugte ich dieregister_uninstall_hook()
.uninstall_plugin()
. Dieuninstall.php
Datei hat Vorrang, und jeder Deinstallations-Hook wird ignoriert und dieuninstall_{$plugin_file}
Aktion wird nicht ausgelöst.