Imaginez une chaîne de montage où chaque poste laisse la possibilité d’ajouter une étape supplémentaire sans arrêter la ligne : c’est ce principe que WordPress applique tout au long de son exécution, de l’initialisation à l’affichage final de la page.
Deux familles
Le terme générique recouvre en réalité deux mécanismes distincts. Une action, déclenchée avec do_action() et interceptée avec add_action(), exécute du code à un instant donné sans attendre de retour. Un filtre, déclenché avec apply_filters() et intercepté avec add_filter(), transmet une valeur que la fonction accrochée doit modifier puis retourner :
add_action( 'init', 'enregistrer_type_personnalise' );
add_filter( 'excerpt_length', function ( $longueur ) {
return 30;
} );
Où les trouver
Le cœur de WordPress déclenche des centaines de hooks documentés, depuis init tout au début du chargement jusqu’à wp_footer juste avant la fermeture de la page. Une extension bien conçue déclenche aussi ses propres hooks pour rester elle-même extensible par d’autres.
Bon à savoir
- L’ordre d’exécution entre plusieurs fonctions accrochées au même hook se règle avec l’argument de priorité, un entier plus petit s’exécutant en premier.
- Un hook mal orthographié ne génère aucune erreur : la fonction accrochée ne se déclenche simplement jamais, ce qui rend ce genre de faute particulièrement difficile à repérer.
- La fonction
remove_action()ouremove_filter()permet de détacher une fonction précédemment accrochée par une autre extension ou par le thème, à condition d’utiliser exactement la même priorité que celle déclarée à l’origine.