web-dev-qa-db-fra.com

register_uninstall_hook () vs uninstall.php - quel est le meilleur moyen de gérer le script de désinstallation de plug-in?

aujourd'hui, tout en regardant à l'intérieur de WP Codex, j'ai découvert deux façons de gérer les scripts de désinstallation de plug-in (tels que les suppressions, les options, les données, les tableaux, etc.). Une façon consiste à utiliser register_uninstall_hook() et l'autre à l'aide du simple uninstall.php.

Bien que la page de codex } _ donne beaucoup d’informations sur les deux, mais elle ne dit pas quel est l’avantage d’utiliser l’une sur l’autre.

Comme il y a tant de WP gourous ici, j'ai pensé que je devrais poser cette question à propos de quelle option est la meilleure façon de gérer le script de désinstallation? Utiliser register_uninstall_hook() ou uninstall.php?

J'espère que quelqu'un va clarifier. Merci d'avance.

7
iSaumya

L'avantage de uninstall.php, et la raison pour laquelle il a été introduit, est qu'il vous permet d'isoler votre code de désinstallation du reste du code de votre plugin. Cela signifie qu'il n'est pas nécessaire que tout votre plugin soit chargé lors de sa désinstallation. Cela minimise les risques que votre plug-in exécute par inadvertance du code lors de la désinstallation, qui ne doit être exécuté que lorsque le plug-in est actif. Cependant, en général, vous ne devriez de toute façon pas exécuter de code arbitraire dans vos fichiers de plug-in; la plupart des opérations ne devraient être exécutées que si elles sont déclenchées par un hook.

À partir des docs inclus dans le commit original :

Le plug-in ne doit pas exécuter de code arbitraire en dehors des fonctions lors de l'enregistrement du hook de désinstallation. Afin de fonctionner avec le hook, le plugin devra être inclus, ce qui signifie que tout code placé en dehors d'une fonction sera exécuté pendant le processus de désinstallation. Le plugin ne doit pas entraver le processus de désinstallation.

Si le plugin ne peut pas être écrit sans exécuter de code dans le plugin, celui-ci doit alors créer un fichier nommé 'uninstall.php' dans le dossier du plugin de base ...

TL; DR: Votre plugin devrait vraiment être structuré de telle sorte qu'il ne soit pas avoir d'utiliser unisntall.php, mais son utilisation ajoute quand même une protection supplémentaire contre toute exécution accidentelle pendant la désinstallation.

Bien sûr, dans certains cas, vous devrez peut-être charger des parties de votre plug-in afin de le désinstaller correctement. Mais si vous utilisez uninstall.php, l'inclusion de ces fichiers sera une décision consciente de votre part. Il est donc plus difficile de charger par erreur un fichier de votre plug-in qui exécute du code arbitraire.

La seule fois où j'utiliserais la méthode register_uninstall_hook() serait dans un plugin très simple à fichier unique, dans lequel tout le code serait encapsulé dans une classe unique.


Notez que uninstall_plugin() exécutera le pre_uninstall_plugin et uninstall_{$plugin_file} ([edit: uninstall_{$plugin_file} ne sera exécuté que si register_uninstall_hook() est utilisé]] action hook quelle que soit la méthode utilisée. (Voir ticket # 34569 .)

5
J.D.

Cela dépend de ce que vous voulez. register_uninstall_hook() crée des points d'ancrage et s'exécute lorsque le lien uninstall a été cliqué. Cela signifie qu’il crée en réalité un crochet qui sera appelé en cliquant sur le lien de désinstallation. Supposons que vous ayez développé un plugin et que vous vouliez créer d'autres plugins à partir de ceux-ci et que ces plug-ins complémentaires nécessitent une opération de désinstallation du plugin, ce raccord sera utile. Ici vous aurez un aperçu complet.

Et uninstall.php est un programme de désinstallation générique pour votre plugin. Il se déclenchera lors de la désinstallation de votre plugin. Mais il ne fournit aucun crochet par défaut.

Regardez ici pour plus d'informations.

1
CodeMascot