Ressources pour développeur web

Théme de la semaine : Wordpress

add_action et add_filter : Créer votre propre Hook Wordpress

Temps de lecture estimé : 5 minutes
Accueil PHP 8 add_action et add_filter : Créer votre propre Hook Wordpress

Vous souhaitez personnaliser WordPress sans casser votre site ? Les fonctions add_action et add_filter sont la clé. Grâce à ce hook, vous pouvez intervenir précisément dans le fonctionnement de WordPress, ajouter des fonctionnalités et modifier les contenus facilement. Dans ce guide,

  • Intervenir dans WordPress sans casser le site ni modifier son cœur
  • Gagner en autonomie pour personnaliser un thème ou un plugin selon vos besoins réels
  • Poser des bases solides pour développer des fonctionnalités propres, évolutives et professionnelles

Dans ce tutoriel, vous allez découvrir deux fonctions absolument essentielles : add_action et add_filter. Vous allez comprendre comment utiliser add_action et add_filter pour créer vos propres hooks Wordpress et gagner en liberté dans vos développements.

Comprendre le système de hooks WordPress

Avant même de parler de add_action ou add_filter, il faut comprendre un concept fondamental : les hooks.

Un hook, c’est quoi exactement ?

Imaginez WordPress comme une grande machine bien huilée. À certains moments précis, cette machine s’arrête quelques millisecondes et vous dit :

“Si tu veux intervenir ici, c’est maintenant.”

Ces points d’arrêt s’appellent des hooks.

Hook Wordpress

Il en existe deux types :

  • Les actions → pour exécuter du code
  • Les filters (filtres) → pour modifier une donnée

Et c’est là que nos deux fonctions stars entrent en scène.

add_action : intervenir au bon moment

La fonction add_action permet d’exécuter une fonction personnalisée à un moment précis dans WordPress.

Syntaxe de add_action

add_action('nom_du_hook', 'nom_de_la_fonction');
  • nom_du_hook → le moment où vous intervenez
  • nom_de_la_fonction → ce que vous voulez faire

Imaginons que vous voulez ajouter un petit message en bas de votre site.

function mon_message_footer() {
    echo '<p style="text-align:center;">Merci de votre visite !</p>';
}

add_action('wp_footer', 'mon_message_footer');
  • WordPress arrive à la fin de la page (wp_footer)
  • Il voit que vous avez accroché une fonction
  • Il exécute votre code
  • Votre message apparaît dans le footer.

Simple… mais déjà très puissant.

Comprendre le “hook” utilisé

Dans cet exemple, on utilise :

wp_footer

Ce hook est déclenché juste avant la fermeture de la balise </body>.

Il existe des centaines de hooks dans WordPress. Voici quelques exemples utiles :

  • init → au démarrage de WordPress
  • wp_head → dans le <head>
  • wp_footer → en bas de page
  • save_post → lors de la sauvegarde d’un article

Ajouter une priorité

Par défaut, WordPress exécute vos fonctions dans l’ordre où elles sont ajoutées. Mais vous pouvez contrôler ça avec une priorité.

add_action('wp_footer', 'mon_message_footer', 20);
  • Plus le chiffre est petit → plus ça s’exécute tôt
  • Par défaut → 10

Par exemple, pour ajouter un script JS :

function ajouter_script_custom() {
    echo '<script>console.log("Hello Créa-blog !");</script>';
}

add_action('wp_footer', 'ajouter_script_custom');

Très pratique pour tester ou injecter du JS rapidement.

Modifier le back-office

Si vous souhaitez afficher un message dans l’admin :

function message_admin() {
    echo '<div class="notice notice-success"><p>Bienvenue sur votre site !</p></div>';
}

add_action('admin_notices', 'message_admin');

Résultat : un message s’affiche dans l’administration.

add_filter : modifier les données

Maintenant, passons à add_filter, qui est souvent plus subtil… mais encore plus puissant.

  • Contrairement à add_actionadd_filter sert à modifier une valeur.

Syntaxe de add_filter

add_filter('nom_du_hook', 'nom_de_la_fonction');

Mais ici, il y a une différence importante : Votre fonction doit retourner une valeur

Exemple simple : modifier un titre

function modifier_titre($titre) {
    return '🔥 ' . $titre;
}

add_filter('the_title', 'modifier_titre');

Ce qu’il se passe :

  • WordPress récupère un titre
  • Il passe ce titre dans votre fonction
  • Vous le modifiez
  • Vous le renvoyez

Résultat : tous vos titres auront un petit emoji 🔥

Différence clé avec add_action

C’est LE point à retenir :

  • add_action → exécute du code (pas de retour obligatoire)
  • add_filter → modifie une donnée (retour obligatoire)

Si vous oubliez le return avec add_filter… rien ne fonctionne.

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?

Modifier le contenu d’un article

function ajouter_signature($content) {
    return $content . '<p>Merci d’avoir lu cet article 😊</p>';
}

add_filter('the_content', 'ajouter_signature');

Ainsi, une signature s’ajoute automatiquement à chaque article.

Modifier un extrait

function modifier_excerpt($excerpt) {
    return $excerpt . '... Lire la suite sur notre site';
}

add_filter('the_excerpt', 'modifier_excerpt');

Comment WordPress relie tout ça ?

C’est une question essentielle. En réalité, WordPress utilise en interne des fonctions comme :

  • do_action()
  • apply_filters()
do_action('wp_footer');

WordPress dit :

“Toutes les fonctions attachées à wp_footer… exécutez-vous maintenant.”

Et pour les filtres :

$titre = apply_filters('the_title', $titre);

WordPress dit :

“Qui veut modifier ce titre ?”

Où mettre votre code ?

Bonne question, et elle est cruciale.

Option 1 : functions.php, c’est rapide mais risqué

wp-content/themes/votre-theme/functions.php

Le problème : si vous changez de thème, vous perdez tout.

Option 2 : plugin personnalisé, la solution recommandée

Créez un fichier :

wp-content/plugins/mon-plugin/mon-plugin.php

Avec :

<?php
/*
Plugin Name: Mon Plugin Custom
*/

Et ajoutez votre code dedans.

L’avantage est que votre code reste actif, peu importe le thème.

👉 En savoir plus sur : Comment coder une extension Wordpress

Toujours préfixer vos fonctions

function crea_mon_message_footer() {
    // code
}

Cela évite les conflits avec d’autres plugins.

Vérifier si la fonction existe

if (!function_exists('crea_mon_message_footer')) {
    function crea_mon_message_footer() {
        // code
    }
}

Ne pas surcharger inutilement

Ajoutez du code uniquement si nécessaire. WordPress est déjà une machine complexe… inutile d’ajouter du chaos 😄

Exemple complet (add_action + add_filter)

Imaginons un cas réel. Vous voulez :

  • Ajouter un message dans le footer
  • Modifier les titres
function crea_footer_message() {
    echo '<p style="text-align:center;">Site créé avec passion</p>';
}
add_action('wp_footer', 'crea_footer_message');

function crea_modifier_titre($titre) {
    return strtoupper($titre);
}
add_filter('the_title', 'crea_modifier_titre');

Résultat :

  • Footer personnalisé
  • Titres en majuscules

Imaginez un restaurant :

  • add_action → vous ajoutez un serveur qui intervient à un moment précis
  • add_filter → vous modifiez une recette avant qu’elle soit servie

Les deux travaillent ensemble… mais pas de la même façon.

Ce que vous devez retenir

Même si tout semble nouveau, retenez ceci :

  • add_action → déclenche une action
  • add_filter → modifie une donnée
  • Les hooks sont partout dans WordPress
  • Vous pouvez personnaliser presque tout sans toucher au cœur

Tableau récapitulatif des 25 hooks WordPress les plus utilisés

HookTypeDescriptionUtilisation courante
initActionInitialise WordPressDéclarer CPT, taxonomies
wp_loadedActionWordPress entièrement chargéLancer du code après init
template_redirectActionAvant affichage templateRedirections
wp_headActionDans le <head>Ajouter CSS, meta
wp_footerActionAvant </body>Scripts JS
wp_enqueue_scriptsActionCharger scripts/stylesAjouter CSS/JS proprement
admin_enqueue_scriptsActionScripts adminCustom admin
admin_initActionInit adminConfig backend
admin_noticesActionMessages adminAlertes
save_postActionLors sauvegarde articleTraitement données
before_delete_postActionAvant suppressionNettoyage
wp_loginActionConnexion utilisateurLogs, tracking
user_registerActionNouvel utilisateurEmail, init profil
the_contentFilterContenu articleModifier texte
the_titleFilterTitreAjouter préfixe
the_excerptFilterExtraitModifier résumé
excerpt_lengthFilterLongueur extraitAjuster taille
excerpt_moreFilterSuite extraitTexte « Lire + »
body_classFilterClasses <body>Ajouter classes
post_classFilterClasses articleCSS personnalisé
nav_menu_css_classFilterClasses menuStyliser menu
upload_mimesFilterTypes fichiersAutoriser SVG
login_redirectFilterRedirection loginDashboard custom
widget_textFilterContenu widgetModifier texte
pre_get_postsActionModifier requêtes WPCustom boucle

Vous venez de franchir un cap important. Comprendre add_action et add_filter, ce n’est pas juste apprendre deux fonctions… c’est comprendre comment WordPress respire, fonctionne, et surtout comment vous pouvez dialoguer avec lui.

À partir de maintenant, vous n’êtes plus limité par les thèmes ou les plugins. Vous pouvez intervenir exactement où vous voulez, quand vous voulez. Et ça, croyez-moi, c’est un vrai super pouvoir.