Agence WordPress Be API | Actualités | WordPress | Les hooks dans WordPress

Les hooks dans WordPress

Publié le

par

Qu’est-ce qu’un hook dans WordPress ?

Les hooks (appelés crochets en français) est un concept central pour WordPress. Il est présent depuis le tout début, on les trouve déjà dans la version 0.71 qui est la première version officielle de WordPress.

Ces hooks permettent aux développeurs de modifier le comportement par défaut de WordPress et d’ajouter de nouvelles fonctionnalités, le tout sans avoir à toucher aux fichiers du cœur. Ils représentent des “points d’accroches” sur lequel le développeur peut s’accrocher pour exécuter du code spécifique.

Cette approche a plusieurs avantages :

  • Maintenabilité de WordPress : le cœur de WordPress n’est jamais modifié, il n’y a pas de risque de “perdre” des modifications lors de mises à jour,
  • Maintenabilité du code : le code spécifique est découplé du code de WordPress. Il est placé dans les plugins ou le thème,

Les hooks ne sont pas limités au cœur de WordPress ! La plupart de vos extensions et thèmes proposent les leurs. Ce sont donc un gros plus pour l’écosystème WordPress en général.

Ils sont découpés en deux grandes familles, les actions et les filtres. Quelle est la différence ?

Définition des hooks : actions vs filters

Avant de passer à la pratique et de voir concrètement comment profiter des hooks, il faut bien comprendre la différence entre les deux grandes catégories, les actions et les filtres.

Les actions

Les actions sont utilisées pour permettre aux développeurs d’exécuter du code à des moments spécifiques du code du cœur de WordPress, d’extensions etc.

Ce sont des point d’entrée pour que les développeurs puissent “brancher” leur code personnalisé.

Les deux fonctions associées sont :

  • add_action : elle permet aux développeurs de s’accrocher à une action existante,
  • do_action :   elle permet de déclencher une action et d’exécuter le code qui s’est accroché dessus.

Elles ne permettent pas de modifier de la donnée, c’est le rôle des filtres.

Les filtres

Les filtres sont utilisés pour permettre aux développeurs de modifier de la donnée à des moments spécifiques du code du cœur de WordPress, d’extensions etc.

Les deux fonctions associées sont :

  • add_filter : elle permet aux développeurs de s’accrocher à un filtre existant pour modifier la donnée associé,
  • apply_filters :  elle permet d’exécuter le filtre pour laisser le code qui s’est accroché dessus modifier la donnée.

À la différence des actions, les filtres prennent de la donnée en entrée et doivent la renvoyer en sortie (sous peine de causer des bugs dans le projet).

À quoi servent les hooks dans le cœur de WordPress?

Par exemple, WordPress fourni l’action “save_post”. Cette action est exécutée à chaque fois qu’un contenu est enregistré. Un développeur pourrait choisir d’utiliser cette action pour envoyer un email à l’administrateur pour l’avertir de ce changement.

Pour reprendre l’exemple, WordPress fourni le filtre “wp_insert_post_data” qui permet de modifier les données d’un contenu avant qu’il soit enregistré en base de données. Un développeur pourrait utiliser ce filtre pour modifier le contenu.

Comment utiliser un hook dans le fichier functions.php ?

Pour utiliser un hook on passe par les fonctions “add_action” ou “add_filter”.

La signature des deux fonctions est la même :

add_action( {nom du hook}, {fonction}, {priorité}, {nombres d'arguments} );
add_action

On indique en premier le nom du hook que l’on souhaite utiliser, et en deuxième une fonction qui sera appelée lorsque le hook est déclenché (en anglais on appel ça un callback).

// Ce code peut être placé dans un plugin ou dans le fichier functions.php de votre thème

// Active le support des images à la une pour le thème
function theme_support() {
add_theme_support( 'post-thumbnails' );
}
add_action( 'after_setup_theme', 'theme_support' );

// Préfixe le titre des contenus avec "Découvrez le contenu : "
function prefix_post_title( $title ) {
return "Découvrez le contenu : " . $title;
}
add_filter( 'the_title','prefix_post_title' );

Arguments

Les hooks peuvent fournir des arguments aux fonctions qui sont accrochés :

  • dans le cas des actions, ces arguments permettent de donner du contexte au développeur pour qu’il puisse personnaliser le comportement de son code,
  • dans le cas des filtres, le premier argument correspond à la valeur à modifier et le reste donne du contexte supplémentaire, toujours pour permettre de personnaliser le comportement du code

On peut préciser le nombre d’arguments attendu dans la fonction accrochée si on doit en recevoir plus d’un.

// Préfixe le titre des articles avec "Découvrez l'article : "
function modifier_titre_article( $title, $post_id ) {
// on modifie le titre uniquement pour les articles
if ( 'post' === get_post_type( $post_id ) ) {
$title = "Découvrez l'article : " . $title;
}

return $title;
}

// On veut recevoir les deux arguments du filtre the_title
// apply_filters( 'the_title', $post_title, $post_id );
add_filter( 'the_title', 'modifier_titre_article', 10, 2 );

Priorité

La priorité permet spécifier un ordre dans lequel les fonctions accrochés au hook sont exécutées. Les priorités les plus basses s’exécutent en premier.

La priorité par défaut est 10.

add_action( 'wp_body_open', 'fonction_priorite_haute', 1 ); // 1ère
add_action( 'wp_body_open', 'fonction_priorite_defaut' ); // 2ème
add_action( 'wp_body_open', 'fonction_priorite_basse', 25 ); // 3ème

La priorité est importante à garder en tête lorsque l’on utilise des filtres, car chaque filtre reçoit le résultat du filtre précédent. Si un filtre modifie la valeur originale, le filtre suivant recevra cette valeur modifiée.

Cas pratique : ajouter un message dans le pied de page

Pour illustrer concrètement l’utilisation des hooks, nous allons intégrer la date du jour dans le footer de votre site WordPress. On va utiliser l’action wp_footer qui est intégrer dans les thèmes.

// Ce code peut être placé dans un plugin ou dans le fichier functions.php de votre thème

// Affiche la date courante dans le footer des pages du site.
function show_current_date() {
// Nous sommes le Vendredi 20 Juin 2025
echo '<p>Nous sommes le '. esc_html( date_i18n( 'l j F Y' ) ).'</p>';
}
add_action( 'wp_footer', 'show_current_date' );

Bonnes pratiques pour l’utilisation des hooks

Où placer votre code de hooks WordPress ?

Les hooks WordPress sont donc la base sur lesquels s’appuient les développeurs pour réaliser des modifications ou ajouter de nouvelles fonctionnalités.

Lorsque vous travaillez avec les hooks WordPress, le choix de l’emplacement de votre code personnalisé est important pour assurer la maintenabilité et la robustesse de votre site. Deux options principales s’offrent à vous : les plugins ou votre thème.

Il est préférable de placer votre code personnalisé dans un plugin si sa fonctionnalité doit persister même si l’utilisateur change de thème. C’est le cas pour des éléments comme les types de contenu personnalisés, des fonctionnalités complexes, ou toute logique métier qui ne dépend pas directement de l’apparence visuelle. Un plugin garantit que ces fonctionnalités restent actives quel que soit le thème choisi.

À l’inverse, si votre code concerne spécifiquement l’apparence ou le comportement de votre site lié à un thème précis, il est plus judicieux de l’intégrer directement dans le thème (avec le fichier functions.php notamment). Cela inclut des tâches telles que la déclaration de menus, le chargement d’assets spécifiques au thème (feuilles de style, scripts JavaScript), ou la configuration des blocs Gutenberg disponibles.

Où trouver des informations sur les hooks WordPress ?

Nous avons vu que les hooks peuvent avoir différents nombres d’arguments.

La documentation officielle de WordPress (le Developer Handbook) est une mine d’informations. Il propose une liste complète des hooks, avec des détails sur leurs arguments et leur utilisation.

Il ne faut pas non plus hésiter à examiner directement le code sources des fonctions WordPress pour voir les hooks qu’elles proposent (s’appliquent aussi dans le cas du code sources des plugins).