Le blog de l’agence.

Identifier les fonctions appelées par certains hooks WordPress.

Durant un développement de plugin WordPress pour un client, j’ai récemment eu besoin de lister toutes les fonctions appelées sur tous les hooks WooCommerce qui modifient le statut d’une commande.

Je présente ici une fonction permettant de nous aider à cibler ces fonctions, sans connaitre le nom précis de tous les hooks à investiguer.

Conseil

Cette fonction fait partie de mon Must-use plugin msk-devtools (que j’intègre à tous mes développements WordPress) qui offre quelques fonctions récurrentes bien pratiques pour faciliter notre tâche de développeur WordPress. N’hésitez pas à le télécharger et l’installer !

Débugger les hooks WordPress et les fonctions appelées

Identifier les fonctions appelées par certains hooks WordPress 1

Utiliser Query Monitor

L’excellente extension Query Monitor nous donne déjà de précieuses informations au sujet des hooks chargés sur une page d’un site WordPress, comme on peut le voir sur l’image ci-dessous.

Identifier les fonctions appelées par certains hooks WordPress 2
Listing des hooks appelés sur la page en cours grâce à Query Monitor

Mais analyser cette liste de hooks, pour débugger un comportement précis, peut vite devenir être une tâche titanesque vu le nombre d’actions et filtres appelés par WordPress, le thème et les plugins actifs.

Mais alors…

Comment inspecter tout ce qu’il se passe sur plusieurs hooks WordPress spécifiques à la fois ?

Grâce à une petite fonction créée rien que pour ça !

Utilisation

inspect_hooks( [ 'woocommerce', 'status' ] )

Va nous renvoyer la liste de tous les hooks contenant le mot woocommerce et status et nous indiquer toutes les fonctions (ou méthodes de classes, ou fonctions anonymes) appelées par ces hooks.

Identifier les fonctions appelées par certains hooks WordPress 3

Pour chaque fonction appelée sur un hook, on peut savoir de quel fichier elle provient et à quelle ligne elle est enregistrée. Il suffit de faire un var_dump() de ce qui est retourné pour afficher ces données !

Utilité

Une petite fonction utilitaire fort pratique pour pouvoir analyser ce qu’il se passe derrière des événements WordPress spécifiques sans trop savoir les noms officiels des hooks déclenchés.

Par exemple :

  • inspect_hooks( [ 'wp', 'footer' ] ) va nous dire tout ce qui est déclenché dans le footer de notre site
  • inspect_hooks( [ 'woocommerce', 'cart' ] ) va nous lister tout ce qu’il se passe autour du panier WooCommerce
  • inspect_hooks( [ 'gform' ] ) va nous permettre de savoir toutes les fonctions qui s’injectent dans la logique de Gravity Forms

Grâce à cela, on va pouvoir en apprendre un peu plus sur toutes les logiques déclenchées lors d’événements précis. Super pratique, par exemple, pour découvrir tous les plugins qui ajoutent de nouveaux comportements sur certains événements WordPress. Actions et filtres compris !

Qui fait quoi quand une commande WooCommerce change de statut ? Quel plugin déclenche des fonctionnalités quand un commentaire est publié ? D’où vient cette fonction qui s’exécute à chaque fois qu’un article est publié ?

Plutôt pratique, non ;) ?

Identifier les fonctions appelées par certains hooks WordPress 4

Un commentaire a été rédigé, ajoutez le votre.

  1. Dom dom Répondre

    Bonjour
    Très intéressant comme fonction.
    Je suis débutant en code wordpress ; est-il possible d’expliquer ou je dois placer ce plugin, ou je dois écrire « inspect_hooks » ?
    Merci d’avance

Laisser un commentaire