Aller au contenu
WooRescueHQ

WooCommerce / Erreurs

Conflit d’extensions WooCommerce : comment trouver la cause

Réponse courte

Partez des preuves avant de désactiver quoi que ce soit : le chemin de fichier d’une erreur ou une requête en échec nomment généralement les composants en cause. S’il n’y a pas d’erreur, reproduisez le problème sur une préproduction, passez à un thème par défaut et désactivez les extensions par moitiés jusqu’à ce que le problème disparaisse : le coupable est trouvé en quelques étapes. Corrigez ensuite l’interaction (priorité de hook, chargement des scripts, snippet de compatibilité ou mise à jour) au lieu de laisser quelque chose d’important désactivé.

Symptômes

  • Quelque chose a cassé juste après l’installation ou la mise à jour d’une extension, du thème ou de WooCommerce.
  • Le checkout, le panier ou les fiches produit se comportent différemment avec une extension précise active.
  • Des erreurs JavaScript qui mentionnent le script d’une autre extension, ou des bibliothèques en double.
  • Une erreur fatale comme Cannot declare class ou Cannot redeclare function.
  • Le problème n’apparaît que pour certains produits, moyens de paiement ou rôles d’utilisateur.

Causes les plus fréquentes

  1. Concurrence de hooks : deux composants branchés sur le même filtre, le dernier écrasant ou annulant le premier (prix, frais, livraison, champs du checkout).
  2. Conflits JavaScript : versions de jQuery ou de bibliothèques en double, scripts chargés dans le mauvais ordre, optimiseurs qui combinent ou diffèrent les scripts du checkout.
  3. Collisions de bibliothèques embarquées : deux extensions qui livrent des versions différentes de la même bibliothèque PHP, et celle chargée en premier l’emporte.
  4. Modèles surchargés dans le thème, obsolètes par rapport à WooCommerce.
  5. Hypothèses différentes sur les données : une extension stocke des valeurs qu’une autre n’attend pas, ou les deux écrivent la même clé de métadonnée.
  6. Restrictions REST et AJAX : des extensions de sécurité qui bloquent des points d’accès dont dépend une autre extension.

Diagnostic

1. Partez des preuves, pas de la désactivation

  • Une erreur PHP ? Son chemin de fichier nomme le composant et la trace montre quel hook les relie.
  • Une erreur JavaScript ? La console indique le fichier du script et la ligne.
  • Une requête en échec ? Le corps de la réponse dans le panneau Réseau contient souvent l’erreur ou le nom du composant qui l’a rejetée.
  • Une chronologie ? La première occurrence coïncide généralement avec une mise à jour ou une installation.

2. Reproduisez en préproduction

Copiez la boutique en préproduction et vérifiez que le problème s’y produit aussi. Si ce n’est pas le cas, la cause vient de l’environnement (cache, CDN, configuration serveur), pas d’une extension.

3. Isolez par moitiés

Passez à un thème par défaut (comme Storefront) et testez. Si le problème persiste, désactivez la moitié des extensions (en gardant WooCommerce et ce dont le test a besoin, comme la passerelle de paiement), retestez, et continuez à diviser par deux le groupe qui contient le problème.

Extensions actives Tests nécessaires, en divisant par deux
16 environ 4
32 environ 5
64 environ 6

4. Confirmez la paire

Une fois le suspect trouvé, testez WooCommerce avec cette seule extension, puis avec elle et celle avec laquelle elle interagit le plus probablement. Un conflit est confirmé quand vous pouvez le reproduire avec le plus petit ensemble possible.

Journaux et vérifications techniques

  • WooCommerce → État → Journaux (fatal-errors) et le journal d’erreurs PHP.
  • WooCommerce → État → État du système : extensions actives et versions, modèles surchargés obsolètes.
  • Console du navigateur et panneau Réseau sur la page concernée.
  • Les changelogs des extensions mises à jour autour de la première occurrence.

Solutions

  • Mettez à jour les deux composants ; beaucoup de conflits sont déjà corrigés dans une version ultérieure.
  • Ajustez la priorité des hooks dans un petit mu-plugin de compatibilité, pour que la logique voulue s’exécute en dernier.
  • Empêchez les scripts de se charger là où ils sont inutiles, et excluez les scripts du checkout de la combinaison et du différé.
  • Mettez à jour ou supprimez les modèles surchargés obsolètes du thème.
  • Signalez un cas reproductible aux éditeurs : versions, étapes et ensemble minimal d’extensions actives.
  • Remplacez une extension abandonnée plutôt que de la corriger indéfiniment.
PHPmu-plugins/compat-fees.php
// Garantit que notre logique de frais s’exécute après une autre extension qui les réinitialise en priorité 20.
add_action( 'plugins_loaded', function () {
    remove_action( 'woocommerce_cart_calculate_fees', 'mystore_apply_fees', 10 );
    add_action( 'woocommerce_cart_calculate_fees', 'mystore_apply_fees', 30 );
}, 20 );

Ce qu’il ne faut pas faire

  • Ne désactivez pas les extensions une par une sur la boutique en production : c’est lent, cela casse d’autres parcours pour les clients et vous risquez de désactiver ce qui traite les paiements.
  • Ne modifiez pas les fichiers de l’extension en conflit ; la modification disparaît à la prochaine mise à jour.
  • Ne laissez pas une extension importante désactivée « pour l’instant » sans comprendre ce qu’elle faisait.
  • Ne supposez pas que la dernière extension mise à jour est coupable sans l’avoir testé.

Quand faire appel à un expert

Faites appel à un ingénieur quand le conflit implique du code sur mesure ou des extensions premium dont vous dépendez, quand il n’apparaît qu’en production avec le trafic réel, quand il corrompt des données comme des prix ou des commandes, ou quand vous avez besoin que les deux composants continuent de fonctionner.

Questions fréquentes

Comment trouver quelle extension entre en conflit avec WooCommerce ?

Consultez d’abord les journaux d’erreurs ; le chemin du fichier nomme souvent l’extension. S’il n’y a pas d’erreur, reproduisez le problème en préproduction et désactivez les extensions par moitiés, en retestant à chaque fois, jusqu’à trouver celle dont la désactivation règle le problème. Testez-la ensuite seule avec WooCommerce pour confirmer.

Puis-je chercher un conflit sur une boutique en production ?

Pas en désactivant des extensions pour tout le site. Le mode de dépannage de l’extension Health Check & Troubleshooting désactive les extensions et change de thème pour votre seule session, ce qui est bien plus sûr ; une préproduction reste toutefois le meilleur endroit.

Est-ce toujours une extension ?

Non. Le thème, un snippet dans functions.php, un mu-plugin, le cache serveur ou l’optimisation de scripts d’une CDN peuvent se comporter comme un conflit d’extensions.

Et si j’ai besoin des deux extensions ?

L’objectif est alors de corriger l’interaction : changer la priorité d’un hook, empêcher un script de se charger sur certaines pages, ajouter un petit snippet de compatibilité ou signaler un cas reproductible aux éditeurs.

$ décrivez le problème

Un problème avec WooCommerce ?Demandez un diagnostic.

Dites-nous ce qui ne fonctionne pas, ce qui a changé récemment et l'impact sur votre activité. Nous examinons chaque demande et vous recommandons la marche à suivre.

Demander un diagnostic Voir les services et les tarifs

N'envoyez jamais de mots de passe, de clés API ni de données de carte via le formulaire.

Diagnostic à partir de299 €

Demander un diagnostic