J'ai fait des recherches à ce sujet plusieurs fois, mais ma recherche ne révèle pas grand-chose, sauf le code personnalisé qui peut ou non être une bonne pratique WordPress.
Depuis les dernières versions (WordPress 3.9 "Smith"), un crochet a-t-il été ajouté au processus de mise à jour du plugin? Je demande parce que c'est un besoin très basique, mais je ne le vois pas (encore) ajouté au codex. Sinon, quelle est la norme et les meilleures pratiques employées par les développeurs?
EDIT: Juste pour clarifier, je ne parle pas d'activation, mais de mise à jour, de cette façon, s'il y a des changements dans la base de données ou sinon cela peut être résolu.
plugin-development
actions
upgrade
user1915665
la source
la source
Réponses:
Je ne pense pas qu'une action ait été ajoutée. Vous pouvez consulter les détails de la version pour n'importe quelle version et voir toutes les nouvelles actions ajoutées.
La manière WordPress d'exécuter du code lors de la mise à jour du plugin est décrite ici :
et avec l'exemple de code ici :
la source
register_activation_hook
, car dans la plupart des cas, un plugin est désactivé / activé chaque fois que vous le mettez à jour depuis l'administrateur. Accrocherplugins_loaded
fera votre vérification à chaque chargement de page (y compris le frontend). Il a été question d'introduireregister_update_hook
, mais il a été marqué comme WONTFIX il y a quelque temps. La discussion y est utile.D'après la discussion où ils ont décidé de ne pas ajouter de hook / fonction personnalisé spécifique à la mise à niveau , cela ressemble à "la plupart des gens" (il y a 4 ans)
register_activation_hook
, car il est appelé lorsqu'un plugin est mis à niveau via la page d'administration; la plupart des exemples que j'ai vus depuis lors suivent cette tendance.Pour la plupart des utilisations, je suggère de ne pas accrocher
plugins_loaded
, car il serait appelé à chaque chargement de page. L'exception à cela est mentionnée dans la discussion: les chemins de mise à niveau via FTP / SVN sont des `` cas marginaux '', car WP n'aurait pas de mécanisme pour savoir que le plugin a été modifié, auquel cas la réponse précédente pourrait être plus pertinente.Voir https://gist.github.com/zaus/c08288c68b7f487193d1 pour un exemple de «cadre simple» utilisant
register_activation_hook
.la source
register_activation_hook
n'est pas garanti d'être exécuté sur les mises à jour, voir make.wordpress.org/core/2010/10/27/…plugins_loaded
- exécute chaque charge et peut être fastidieux / lent.Depuis WordPress 3.9, vous pouvez utiliser le
upgrader_process_complete
hook.Voir référence 1 , 2
Voici un exemple de code:
Une fois le plugin mis à jour, il définira la tâche dans db en utilisant la
set_transient()
fonction. Il n'est pas recommandé d'ajouter du code de mise à jour lors de l'appel duupgrader_process_complete
hook.Ensuite, si vous accédez à une autre page d'administration, le
plugins_loaded
hook fonctionnera et le code de mise à jour y fonctionnera.Veuillez noter que ce plugin doit être activé pour que le crochet de mise à jour fonctionne.
Cela ne fonctionne pas sur l'activation du plugin, donc si vous voulez que le code qui fonctionne sur l'activation du plugin, vous devez le coder en
register_activation_hook()
fonction.la source