Les Hooks WordPress : Le couteau suisse du développeur 🛠️
Aujourd’hui on plonge dans un truc super important : les hooks WordPress. Si t’as déjà codé sur WordPress, tu les utilises probablement sans même le savoir. C’est un peu comme la Force dans Star Wars – elle est partout, elle lie tout, mais faut savoir la maîtriser ! 😉
Les deux saveurs de hooks : Actions vs Filtres
Les Actions (do_action)
C’est comme un événement qui dit « Hé, quelque chose vient de se passer, tu veux réagir ? »
// WordPress lance l'action do_action('mon_super_evenement', $data); // Toi, tu écoutes et tu réagis add_action('mon_super_evenement', 'ma_fonction_reaction', 10, 1);
Les Filtres (apply_filters)
Imagine un tuyau où tu peux modifier ce qui passe dedans. Le filtre dit « Tiens, voilà une donnée, tu veux la modifier avant qu’elle continue son chemin ? »
// WordPress demande si quelqu'un veut modifier la donnée $titre = apply_filters('modifier_mon_titre', $titre); // Toi, tu interviens pour modifier add_filter('modifier_mon_titre', function($titre) { return "🚀 " . $titre; });
Anatomie d’un hook
add_action('nom_du_hook', 'ma_fonction_callback', 10, 2); // ^ ^ ^ // | | | // Callback Priorité Nombre de paramètres
La Priorité (3ème paramètre)
La priorité détermine l’ordre d’exécution des fonctions attachées au même hook. Plus le nombre est bas, plus la fonction s’exécute tôt.
// S'exécute en premier (priorité 5) add_action('init', 'fonction_premiere', 5); // S'exécute ensuite (priorité par défaut : 10) add_action('init', 'fonction_normale'); // S'exécute en dernier (priorité 20) add_action('init', 'fonction_derniere', 20);
Valeurs courantes :
- 1-9 : Très haute priorité (exécution précoce)
- 10 : Priorité par défaut
- 11-100 : Basse priorité (exécution tardive)
Le Nombre de Paramètres (4ème paramètre)
Indique combien de paramètres votre fonction callback acceptera.
// Hook qui envoie 3 paramètres do_action('sauvegarde_article', $post_id, $post, $update); // Fonction qui reçoit tous les paramètres add_action('sauvegarde_article', 'ma_fonction', 10, 3); function ma_fonction($post_id, $post, $update) { // Accès aux 3 paramètres } // Fonction qui ne reçoit que 2 paramètres add_action('sauvegarde_article', 'autre_fonction', 10, 2); function autre_fonction($post_id, $post) { // Accès uniquement aux 2 premiers paramètres }
Les hooks que tu utilises déjà (si, si, je t’assure !)
Les actions star ⭐
// Dans ton header.php add_action('wp_head', 'mon_code_tracking'); // Quand WordPress démarre add_action('init', 'initialiser_mes_trucs'); // Après une mise à jour d'article add_action('save_post', 'ma_fonction_synchro');
Les filtres vedettes 🌟
// Modifier le contenu avant affichage add_filter('the_content', 'ajouter_pub_fin_article'); // Customiser les classes du body add_filter('body_class', function($classes) { $classes[] = 'mon-super-theme'; return $classes; });
Ce sont des petits exemples et il y en a pleins d’autres que tu dois utiliser dans ton quotidien.
Créer tes propres hooks (comme un boss 😎)
Version Action
function mon_systeme_newsletter() { // Prévenir que l'envoi va commencer do_action('pre_envoi_newsletter', $data); envoyer_newsletter($data); // Annoncer que c'est fini do_action('post_envoi_newsletter', $data); }
Version Filtre
function calculer_prix_final($produit_id) { $prix = get_prix_base($produit_id); // Laisser d'autres modifier le prix return apply_filters('calcul_prix_final', $prix, $produit_id); }
Les trucs à ne pas oublier 🧠
1. Nomme bien tes hooks
// ❌ Pas comme ça do_action('save'); // ✅ Mais comme ça do_action('mon_plugin_sauvegarde_donnees_utilisateur');
2. Documente (ton « toi du futur » te remerciera)
/** * Permet de modifier le prix final * * @param float $prix Prix de base * @param int $produit_id ID du produit * @return float Prix modifié */ apply_filters('mon_plugin_calcul_prix', $prix, $produit_id);
3. Gère les priorités
// Premier servi add_action('init', 'trucs_importants', 5); // Peut attendre add_action('init', 'trucs_moins_importants', 20);
Pro Tips 🎯
- Pense modularité : Les hooks permettent à d’autres devs d’interagir avec ton code sans le modifier.
- Sois prévisible : Si tu crées un hook ‘avant_action’, crée aussi ‘apres_action’.
- Reste cohérent : Utilise des actions pour faire, des filtres pour modifier.
Pour aller plus loin 🚀
- Explore les hooks du core WordPress (y’en a des centaines !)
- Regarde comment les grands plugins utilisent les hooks
- Crée un petit plugin qui utilise uniquement des hooks (excellent exercice)
Voilà ! T’es maintenant prêt à devenir un maître Jedi des hooks WordPress ! Des questions ? Des retours d’expérience ? Balance en commentaire ! 💬
N’oublie pas : « Avec de grands hooks viennent de grandes responsabilités » (ou un truc comme ça 😅).