Les Hooks WordPress : Le couteau suisse du développeur 🛠️

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 :

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 🎯

  1. Pense modularité : Les hooks permettent à d’autres devs d’interagir avec ton code sans le modifier.
  2. Sois prévisible : Si tu crées un hook ‘avant_action’, crée aussi ‘apres_action’.
  3. Reste cohérent : Utilise des actions pour faire, des filtres pour modifier.

Pour aller plus loin 🚀

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 😅).