Ressources pour développeur web

Théme de la semaine : PlugIn Wordpress

add_action et add_filter : Créer votre propre Hook Wordpress

Temps de lecture estimé : 6 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 Wordpress, 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.

Extension WordPress SEO

Boostez votre maillage interne WP

Analysez votre structure SEO, détectez les pages orphelines, visualisez vos clusters et améliorez votre maillage interne facilement.

Analyse SEO Pages orphelines Clusters SEO

Extension WordPress gratuite développée par Créa-troyes (Alban GUILLIER).

Découvrir l’extension

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.

👉 Pour les débutants, découvrez comment coder une fonction PHP pour Wordpress.

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.

👉 Tout comprendre au fichier functions.php Wordpress.

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.

👉 add_action et add_filter vous aideront à personnaliser votre Backoffice WordPress.

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.

👉 Maintenant que vous savez comment ajouter une fonction ou un filtre, apprenez à retirer les fonctions inutiles avec remove_action.