Illustration d’un « hook » de type filtre

Tentons d'illustrer le fonctionnement d'un « hook » de type filtre.

Prenons une fonction hypothétique définie dans l'API WordPress. Disons que cette fonction s'appelle une_fonction(). Elle s'occupe de récupérer une donnée dans la base de données puis de l'afficher à l'écran.

Mais avant d'afficher la donnée, elle met à la disposition des développeurs un point d'ancrage où ils pourront s'accrocher pour intervenir sur la donnée avant qu'elle ne soit affichée.

▼Publicité

Fonction API WordPress définissant un hook

Sans même utiliser les « hooks », un thème peut utiliser cette fonction pour afficher la donnée à l'endroit où il le souhaite. 

Fichier modèle qui appelle une fonction de l'API

Toujours sans utiliser les « hooks », il est possible, pour un thème enfant, d'apporter une modification à cette donnée avant qu'elle ne soit affichée en copiant le fichier modèle dans le thème enfant. Le thème enfant pourrait, par exemple, appliquer une classe CSS différente selon que la donnée est affichée dans une page ou dans un article.

Fichier modèle copié puis adapté dans le thème enfant

Le problème avec cette approche, c'est que lors de la mise à jour du thème parent, si des ajouts ont été apportés à ce fichier modèle, il faudra recopier ces ajouts dans le thème enfant pour qu'ils soient effectifs.

C'est ici que les « hooks » deviennent intéressants : plutôt que de recopier le fichier modèle, on lancera notre crochet au point d'ancrage prévu par la fonction afin d'y apporter les ajustements souhaités­. Ainsi, lorsque le fichier modèle du thème parent appellera la fonction, la donnée affichée sera celle retournée par la fonction associée au « hook ».

Exemple d'utilisation d'un hook

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories

3 commentaires

  1. anotherman

    Bonjour,

    J’ai bien lu votre article, et je le trouve très bien illustré.
    J’ai un peu de mal cependant à comprendre comment est defini le point d’ancrage (nom_du_hook) dans la fonction une_fonction() ?
    Merci de votre aide