Maîtriser les hooks personnalisés de WooCommerce : guide complet, du niveau débutant à la pratique avancée

2 minutes de lecture
2026-03-14
2026-06-04
2,259
Je reçois une commission lorsque vous achetez via les liens ci‑dessous, sans frais supplémentaires pour vous.

Concepts de base des hooks WooCommerce

Avant d’aller plus loin dans la personnalisation, il est essentiel de comprendre le fonctionnement de base des hooks de WooCommerce. WooCommerce est construit sur WordPress et hérite donc entièrement de son puissant système de hooks. Les hooks se divisent principalement en deux types :action et filter

action Les hooks vous permettent d“” exécuter » un morceau de code à des moments précis, par exemple après l’ajout d’un produit au panier ou avant le rendu de la page de paiement. Ils ne renvoient aucune valeur ; ils offrent simplement une occasion d’insérer une fonctionnalité personnalisée. Un exemple typique deactionLe crochet estwoocommerce_before_add_to_cart_buttonIl vous permet d’afficher du contenu avant le bouton “ Ajouter au panier ”.

filter Les hooks vous permettent de “ modifier ” les données. Lorsque WooCommerce est sur le point d’utiliser une variable donnée (comme le prix, le titre ou la description), il la fait passer par unfilterLe hook transmet ces données ; votre fonction personnalisée peut les recevoir, les modifier, puis renvoyer la valeur modifiée. Par exemple,woocommerce_product_get_priceLes hooks vous permettent de modifier dynamiquement le prix des produits.

Lectures recommandées Tutoriel de base et guide pratique de développement d’extensions WooCommerce

Pour utiliser un hook, vous devez “ accrocher ” votre fonction personnalisée à celui-ci. Cela se fait à l’aide de deux fonctions principales :add_action()Utilisé pour les hooks d’actionadd_filter()Utilisé pour filtrer les hooks. Ces deux fonctions se trouvent généralement dans le de votre thème enfantfunctions.phpCette fonctionnalité peut être appelée à partir d'un fichier ou d'un plugin personnalisé.

Hébergement WordPress par UltraHost
Garantie de remboursement dans les 30 jours, bande passante illimitée et base de données, protection gratuite contre les attaques DDoS. Avantage de 501 TP4T pour les achats sur 3 ans.

Comment trouver et utiliser les hooks existants ?

WooCommerce propose des milliers de « hooks » (des fonctionnalités prédéfinies pouvant être activées ou modifiées) répartis dans tous les recoins de son code source. Savoir comment les trouver est la première étape essentielle pour effectuer un développement efficace.

La méthode la plus directe consiste à consulter la documentation officielle des développeurs de WooCommerce, qui contient une section spéciale intitulée “ Référence des hooks ”. Cependant, pour une exploration plus approfondie, il est très utile de consulter directement les fichiers de template de WooCommerce. Le répertoire des plugins de WooCommerce se trouve généralement…wp-content/plugins/woocommerce/templates/Vous pouvez ouvrir n’importe quel fichier de modèle (par exemple…)single-product.phpOucart/cart.phpEn y regardant de plus près, on découvre qu’il est rempli de…do_action()etapply_filters()les appels, ce sont là les hooks que vous pouvez exploiter.

Par exemple, dans le modèle de page de détails du produit, vous pourriez voir :

do_action( 'woocommerce_before_single_product' );

Cela signifie que vous pouvez utiliseradd_action( ‘woocommerce_before_single_product’, ‘your_custom_function’ );Exécutez votre code à cet emplacement.

Lectures recommandées Tutoriel WooCommerce : comment créer un site de commerce électronique WordPress complet à partir de zéro.

Un autre outil puissant consiste à utiliser des extensions telles que “ Simply Show Hooks ” ou “ WP Hooks Finder ”, qui peuvent afficher de manière intuitive, sur la partie visible du site, tous les hooks en cours d’exécution sur la page actuelle ainsi que leur ordre d’exécution, ce qui est essentiel pour le débogage et la compréhension du flux des hooks.

Créer des hooks personnalisés en pratique

Bien que WooCommerce lui-même fournisse de nombreux hooks, lors du développement de fonctionnalités personnalisées complexes ou d’extensions, créer vos propres hooks peut rendre le code plus modulaire et plus facile à maintenir. Cela suit les mêmes principes que l’utilisation des hooks du noyau.

Définir des hooks d’action personnalisés

Pour créer un élément personnalisé dans votre codeactionUtilisez des hooks là où vous souhaitez permettre à d’autres développeurs ou modules d’insérer du codedo_action()Fonction. Par exemple, supposons que vous soyez en train de créer un système d’abonnement pour les membres ; après qu’un utilisateur a réussi à passer à un abonnement supérieur, vous souhaitez déclencher une action :

hosting.com Hébergement partagé
Hautes performances avec les CPU AMD EPYC, stockage SSD NVMe et LiteSpeed, support interne expert 24h/24 et 7j/7, mesures de sécurité avancées, notamment SSL, protection contre la force brute, les logiciels malveillants et le DDoS, économies pouvant aller jusqu'à 73%.
// 在你的插件或主题函数文件中
function process_membership_upgrade( $user_id, $new_plan ) {
    // ... 处理升级逻辑 ...

// 触发一个自定义动作钩子,允许其他功能接入
    do_action( 'myplugin_after_membership_upgrade', $user_id, $new_plan );

// ... 继续其他逻辑 ...
}

Désormais, d’autres développeurs peuvent étendre les fonctionnalités en ajoutant des actions à votre hook, par exemple pour envoyer un e-mail personnalisé :

add_action( ‘myplugin_after_membership_upgrade’, ‘send_upgrade_email’, 10, 2 );
function send_upgrade_email( $user_id, $plan ) {
    // 发送邮件的代码
}

Définir des hooks de filtre personnalisés

De même, vous pouvez utiliserapply_filters()Créer une personnalisationfilterCrochet, permettant à d’autres de modifier vos données. Par exemple, vous avez une fonction pour calculer les frais de service personnalisés d’une commande :

function calculate_custom_fee( $cart_total ) {
    $base_fee = 5.00; // 基础手续费

// 允许其他代码修改基础手续费
    $custom_fee = apply_filters( ‘myplugin_custom_fee_amount’, $base_fee, $cart_total );

return $custom_fee;
}

D’autres développeurs peuvent désormais facilement modifier ces frais, par exemple en définissant des tarifs progressifs en fonction du montant total du panier :

Lectures recommandées WooCommerce : De l’initiation à la maîtrise : Guide complet pour créer des sites e-commerce professionnels

add_filter( ‘myplugin_custom_fee_amount’, ‘adjust_fee_by_cart_total’, 10, 2 );
function adjust_fee_by_cart_total( $fee, $cart_total ) {
    if ( $cart_total > 100 ) {
        $fee = 0; // 大额订单免手续费
    }
    return $fee;
}

Techniques avancées et meilleures pratiques

Une fois les usages de base maîtrisés, suivre certaines techniques avancées et bonnes pratiques peut rendre votre code de hooks plus robuste et plus efficace.

L'utilisation de la priorité et du nombre de paramètres

Lorsque plusieurs fonctions sont attachées au même événement (ou « crochet »), l’ordre d’exécution est déterminé par les paramètres de priorité.add_action()Ouadd_filter()Dans ce cas, le troisième paramètre représente le niveau de priorité (la valeur par défaut est 10). Plus le chiffre est faible, plus l’action sera exécutée tôt.

Hébergement partagé InterServer
Hébergement mutualisé $2.50 USD par mois, premier mois $0.1 USD code promo tryinterserver, 461 scripts cloud apps, installation en un clic.
add_action( ‘woocommerce_checkout_before_order_review’, ‘function_a’, 5 ); // 先执行
add_action( ‘woocommerce_checkout_before_order_review’, ‘function_b’, 20 ); // 后执行

Le quatrième paramètre indique le nombre de paramètres à recevoir, et il doit correspondre au nombre de paramètres transmis par le hook que vous avez installé.do_actionOuapply_filtersLe nombre de paramètres transmis doit être identique ; sinon, votre fonction risque de ne pas recevoir les données correctes.

Assurer la maintenabilité du code.

Placez toujours votre code lié aux hooks dans le thème enfantfunctions.phpdans le fichier ou dans une extension personnalisée autonome. Cela permet de garantir que vos modifications ne seront pas perdues lors des mises à jour du thème. Ajoutez un préfixe unique à vos fonctions personnalisées et aux noms de vos hooks (comme l’abréviation de votre extension ou le nom de votre entreprise) afin d’éviter les conflits de nommage avec le cœur de WooCommerce, d’autres extensions ou le thème.

Lorsque vous effectuez des modifications complexes, en particulier celles qui impliquent la surcouverture de templates, pensez à utiliser…wc_get_template()Ajoutez du contenu via des fonctions ou des hooks, au lieu de copier directement l’intégralité du fichier de modèle. Cela permet de réduire au maximum les problèmes de compatibilité futurs.

Pendant le développement, assurez-vous que votre site a activéWP_DEBUGAfin de détecter en temps opportun les avertissements ou erreurs PHP causés par une utilisation incorrecte des hooks (par exemple, un nombre de paramètres incohérent).

résumés

Le système de hooks personnalisés de WooCommerce est le pont qui relie son vaste écosystème aux besoins de personnalisation. À partir de la compréhensionactionetfilterDe la distinction fondamentale à la recherche et à l’utilisation habiles des hooks existants, puis à la création de hooks personnalisés destinés à être utilisés par d’autres, chaque étape a considérablement étendu les capacités de personnalisation des boutiques WooCommerce. En suivant les meilleures pratiques telles que la gestion des priorités, la transmission des paramètres et l’organisation du code, vous pouvez construire des fonctionnalités de commerce électronique à la fois puissantes et stables. N’oubliez pas que l’idée centrale des hooks est “ ouvert à l’extension, fermé à la modification ” ; en faisant bon usage de ce principe, votre travail de développement WooCommerce sera deux fois plus efficace pour moitié moins d’efforts.

FAQ Foire aux questions

Comment savoir si un hook est un hook d’action ou un hook de filtre ?

La méthode la plus fiable consiste à consulter le code source de WooCommerce. Si le code utilisedo_action( ‘hook_name’ ), alors il s’agit d’un hook d’action ; si vous utilisezapply_filters( ‘hook_name’, $value )alors, il s’agit d’un crochet de filtre. La documentation destinée aux développeurs et certains plugins de recherche de crochets indiquent également le type de crochet.

Ma fonction personnalisée n’a pas été exécutée. Quelles pourraient en être les raisons ?

Tout d’abord, vérifiez si votre fonction a été testée et si elle a réussi les tests nécessaires.add_actionOuadd_filterest correctement attaché au hook. Ensuite, assurez-vous que le nom du hook est orthographié exactement correctement, y compris la casse. Puis, vérifiez le fichier dans lequel se trouve votre code (commefunctions.php) Vérifiez s’il a été correctement chargé. Enfin, vérifiez les paramètres de priorité : il se peut qu’une fonction de priorité plus élevée ait empêché l’exécution du code suivant, ou que votre fonction ait été interrompue à cause d’une erreur.

Est-il possible de supprimer les fonctions qui sont automatiquement chargées par défaut par WooCommerce dans les hooks (points d’interception du code) ?

Oui, il est possible de l’utiliser.remove_action()etremove_filter()une fonction. Mais cela demande beaucoup de prudence : vous devez connaître le nom de la fonction à retirer, le hook auquel elle est attachée, ainsi que sa priorité. Il faut généralementinitEffectuez l’opération de suppression dans le hook ou après, afin de vous assurer que la fonction à supprimer a bien été montée. Par exemple :remove_action( ‘woocommerce_single_product_summary’, ‘woocommerce_template_single_title’, 5 );

Dans un thème enfant, vaut-il mieux utiliser des hooks ou remplacer directement les fichiers de modèle ?

Dans la grande majorité des cas, utiliser des hooks est un meilleur choix. C’est plus léger, la compatibilité lors des mises à jour est meilleure (lorsque les modèles principaux de WooCommerce sont mis à jour, votre code de hook n’est généralement pas affecté), et c’est aussi plus facile à gérer. Ce n’est que lorsque le contenu à ajouter via des hooks est très complexe, ou lorsqu’il faut modifier fondamentalement la structure du modèle, qu’il faut envisager de surcharger le fichier de modèle. Même en cas de surcharge du modèle, il est recommandé de conserver et d’utiliser autant que possible les hooks d’origine dans le nouveau fichier de modèle.