Aller au contenu
ANavaeian Démarrer un projet
WooCommerce

Hooks et filtres WooCommerce essentiels

mai 21, 2026 5 min de lecture Alexandre Navaeian

Les hooks sont le vrai super-pouvoir de WooCommerce : ils permettent de modifier presque tout — prix, panier, e-mails, tunnel de commande — sans surcharger de templates ni toucher au cœur de l’extension. Comprendre comment ils fonctionnent, c’est la différence entre une boutique qu’on personnalise proprement et une boutique qu’on bricole et qui casse à chaque mise à jour. Voici les hooks WooCommerce essentiels et la bonne manière de les utiliser.

Actions vs filtres : la distinction fondamentale

WooCommerce hérite du système de hooks de WordPress, qui se décline en deux familles. Une action (add_action) exécute du code à un moment précis du déroulé, sans rien renvoyer : par exemple woocommerce_thankyou se déclenche après une commande pour envoyer une notification ou pousser les données vers un ERP. Un filtre (add_filter) intercepte une donnée, la modifie et la renvoie : par exemple woocommerce_product_get_price pour ajuster un prix avant affichage.

La règle est simple : si vous voulez faire quelque chose, c’est une action ; si vous voulez changer une valeur, c’est un filtre. Un filtre doit toujours retourner la donnée reçue (modifiée ou non) — l’oublier est l’erreur la plus courante et elle casse silencieusement le prix, le panier ou le texte concerné.

Comment brancher un hook proprement

La signature complète d’un hook prend quatre arguments : le nom du hook, la fonction de rappel, la priorité et le nombre d’arguments attendus.

add_action( 'woocommerce_thankyou', 'monprefixe_apres_commande', 10, 1 );

function monprefixe_apres_commande( $order_id ) {
    $order = wc_get_order( $order_id );
    // Logique métier : e-mail interne, synchronisation ERP, etc.
}

La priorité (10 par défaut) décide de l’ordre d’exécution quand plusieurs fonctions partagent le même hook : un nombre plus bas passe avant. Le dernier paramètre indique combien d’arguments votre fonction doit recevoir — indispensable pour les filtres qui exposent le produit ou la commande en second argument. Préfixez systématiquement vos fonctions (monprefixe_) pour éviter tout conflit avec un autre plugin.

Les hooks WooCommerce à connaître par zone

Plutôt que de retenir une liste interminable, repérez les grandes zones du parcours d’achat et le hook qui y correspond.

Zone Hook Usage typique
Page produit woocommerce_after_add_to_cart_button Ajouter de la réassurance, un délai de livraison
Page produit woocommerce_product_tabs (filtre) Ajouter ou retirer un onglet
Panier woocommerce_before_cart Message promotionnel, seuil de livraison gratuite
Tunnel woocommerce_checkout_fields (filtre) Ajouter, masquer ou réordonner des champs
Commande woocommerce_thankyou Tracking, fidélité, intégration ERP
Commande woocommerce_order_status_changed Automatiser un workflow selon le statut
E-mails woocommerce_email_before_order_table Personnaliser les e-mails transactionnels
Prix woocommerce_product_get_price (filtre) Tarifs par rôle, B2B, remises dynamiques

Exemples concrets

Ajouter un champ de TVA dans le tunnel — utile pour le B2B :

add_filter( 'woocommerce_checkout_fields', 'monprefixe_champ_tva' );

function monprefixe_champ_tva( $fields ) {
    $fields['billing']['billing_vat'] = array(
        'label'    => 'N° de TVA intracommunautaire',
        'required' => false,
        'class'    => array( 'form-row-wide' ),
    );
    return $fields;
}

Appliquer un tarif professionnel via un filtre de prix :

add_filter( 'woocommerce_product_get_price', 'monprefixe_prix_pro', 10, 2 );

function monprefixe_prix_pro( $price, $product ) {
    if ( current_user_can( 'wholesale_customer' ) ) {
        $price = (float) $price * 0.9; // -10 % pour les comptes pros
    }
    return $price;
}

Afficher un bloc de réassurance sous le bouton d’ajout au panier :

add_action( 'woocommerce_after_add_to_cart_button', 'monprefixe_reassurance' );

function monprefixe_reassurance() {
    echo '<p class="reassurance">Livraison sous 48 h · Retours gratuits 30 jours</p>';
}

Trouver le bon hook

Deux réflexes font gagner des heures. D’abord, la référence officielle des hooks de WooCommerce liste chaque point d’extension par template. Ensuite, en développement, un petit affichage du nom du hook à l’écran (ou un do_action tracé) permet de visualiser exactement quels hooks s’exécutent sur une page donnée, et dans quel ordre. C’est bien plus rapide que de deviner.

Erreurs fréquentes à éviter

  • Oublier de retourner la valeur dans un filtre : la donnée devient vide ou nulle.
  • Ne pas déclarer le bon nombre d’arguments : votre fonction ne reçoit pas le produit ou la commande attendus.
  • Mettre la logique dans le thème plutôt que dans un plugin : tout disparaît au changement de thème.
  • Multiplier les requêtes dans un hook fréquent (comme le rendu de chaque produit) : c’est un nid à lenteurs.

Personnaliser sans casser

Privilégiez toujours un hook à une surcharge de template, et un template surchargé via le thème enfant plutôt qu’une modification directe du cœur. Regroupez vos personnalisations dans une extension dédiée : c’est ce qui garantit qu’elles survivent aux mises à jour de WooCommerce comme du thème, et qu’un autre développeur pourra les reprendre.

Pour mettre tout ça en pratique, lisez créer un plugin WooCommerce, et surveillez les performances quand vous multipliez les hooks. Besoin d’un développement clé en main et maintenable ? Découvrez mon offre de plugin WooCommerce sur mesure ou l’ensemble de mes prestations de développeur WooCommerce freelance.

Pour aller plus loin