Les hooks WordPress (actions & filtres) : guide du développeur 2026
Les hooks WordPress (add_action et add_filter) sont le mécanisme central d'extensibilité de WordPress. Ce guide complet vous explique comment fonctionnent les actions et les filtres, avec des exemples pratiques pour personnaliser WordPress sans modifier le core.
Les hooks sont la base du développement WordPress. Tout plugin, tout thème digne de ce nom les utilise massivement. Comprendre les hooks, c’est comprendre comment WordPress fonctionne réellement — et comment le personnaliser proprement sans toucher au code core.
Qu’est-ce qu’un hook WordPress ?
Un hook est un point d’accroche dans le code WordPress où vous pouvez “accrocher” vos propres fonctions. WordPress déclenche des dizaines de hooks à chaque chargement de page : quand il initialise, quand il charge les scripts, quand il génère le contenu, quand il affiche le pied de page. Vous pouvez brancher du code sur chacun de ces moments.
Il existe deux types de hooks : les actions (vous exécutez du code à un moment précis) et les filtres (vous modifiez une valeur avant qu’elle soit utilisée).
Les actions : add_action
Une action vous permet d’exécuter du code à un moment précis du cycle WordPress :
// Exécuter du code quand WordPress a fini de charger
add_action('wp_loaded', function() {
// Votre code ici
});
// Ajouter du contenu dans le <head>
add_action('wp_head', function() {
echo '<meta name="custom" content="valeur">';
});
// Après qu'un article est publié
add_action('publish_post', function($post_id) {
// Envoyer une notification, vider un cache, etc.
});
Les hooks d’action les plus utilisés : init, wp_head, wp_footer, wp_enqueue_scripts, save_post, after_setup_theme, rest_api_init.
Les filtres : add_filter
Un filtre vous permet de modifier une valeur avant qu’elle soit utilisée. Votre fonction reçoit la valeur, la modifie, et la retourne :
// Modifier le titre de tous les articles
add_filter('the_title', function($title, $post_id) {
if (get_post_type($post_id) === 'product') {
return $title . ' — En stock';
}
return $title;
}, 10, 2);
// Modifier le contenu des articles
add_filter('the_content', function($content) {
if (is_single()) {
$content .= '<p>Cet article vous a plu ? Partagez-le !</p>';
}
return $content;
});
La priorité et le nombre d’arguments
add_action('hook_name', 'ma_fonction', 10, 2) — les deux derniers paramètres sont la priorité (10 par défaut, plus bas = exécuté en premier) et le nombre d’arguments que votre fonction reçoit (1 par défaut). Si vous voulez recevoir plus d’arguments qu’un hook en passe un par défaut, vous devez augmenter ce nombre.
Créer vos propres hooks
Dans vos thèmes et plugins, créez vos propres hooks pour permettre à d’autres développeurs (ou à vous-même) d’étendre votre code proprement :
// Créer une action personnalisée
do_action('montheme_avant_contenu', $post_id);
// Créer un filtre personnalisé
$titre = apply_filters('montheme_titre_carte', get_the_title(), get_the_ID());
echo esc_html($titre);
Retirer des hooks avec remove_action et remove_filter
Vous pouvez supprimer des hooks ajoutés par le thème parent, des plugins ou WordPress lui-même :
// Supprimer un hook simple
remove_action('wp_head', 'wp_generator');
// Supprimer un hook d'une classe
add_action('init', function() {
global $mon_plugin;
remove_action('save_post', [$mon_plugin, 'handler'], 10);
});
Les hooks les plus utiles à connaître
Pour le SEO : pre_get_document_title (modifier le title), wp_head (ajouter du JSON-LD), the_content (modifier le contenu).
Pour les performances : wp_enqueue_scripts (charger/décharger assets), script_loader_tag (ajouter defer/async).
Pour WooCommerce : woocommerce_before_add_to_cart_button, woocommerce_product_tabs, woocommerce_checkout_fields.
Maîtriser les hooks, c’est coder WordPress de façon propre et maintenable, sans jamais toucher aux fichiers core que vous perdriez à la prochaine mise à jour.