Salta al contingut
WooRescueHQ

WooCommerce / Errors

Conflicte de plugins a WooCommerce: com trobar la causa

Resposta curta

Abans de desactivar res, parteix de les evidències: la ruta del fitxer d’un error o una petició que falla solen anomenar els components implicats. Si no hi ha error, reprodueix el problema en una còpia de staging, canvia a un tema per defecte i desactiva plugins per meitats fins que desaparegui: així trobes el culpable en pocs passos. Després arregla la interacció (prioritat de hooks, càrrega de scripts, un snippet de compatibilitat o una actualització) en lloc de deixar alguna cosa important desactivada.

Símptomes

  • Alguna cosa s’ha trencat just després d’instal·lar o actualitzar un plugin, el tema o WooCommerce.
  • El checkout, el carretó o les fitxes de producte es comporten diferent amb una extensió concreta activa.
  • Errors de JavaScript que esmenten l’script d’un altre plugin, o llibreries duplicades.
  • Un error fatal com Cannot declare class o Cannot redeclare function.
  • El problema només apareix amb alguns productes, mètodes de pagament o rols d’usuari.

Causes més habituals

  1. Competència de hooks: dos components enganxats al mateix filtre, on l’últim sobreescriu o desfà el primer (preus, càrrecs, enviaments, camps del checkout).
  2. Conflictes de JavaScript: versions de jQuery o de llibreries duplicades, scripts carregats en l’ordre equivocat, optimitzadors que combinen o difereixen els scripts del checkout.
  3. Col·lisions de llibreries incloses: dos plugins que porten versions diferents de la mateixa llibreria PHP, de manera que guanya la que es carrega primer.
  4. Plantilles sobreescrites al tema que estan desactualitzades respecte a WooCommerce.
  5. Supòsits diferents sobre les dades: un plugin desa valors que un altre no espera, o tots dos escriuen la mateixa clau de meta.
  6. Restriccions de REST i AJAX: plugins de seguretat que bloquegen endpoints dels quals depèn una altra extensió.

Diagnosi

1. Parteix de les evidències, no de la desactivació

  • Un error PHP? La ruta del fitxer anomena el component i la traça mostra quin hook els connecta.
  • Un error de JavaScript? La consola mostra el fitxer de l’script i la línia.
  • Una petició que falla? El cos de la resposta al panell de xarxa sol contenir l’error o el nom del component que l’ha rebutjada.
  • Una cronologia? La primera aparició sol coincidir amb una actualització o una instal·lació.

2. Reprodueix-ho a staging

Copia la botiga a staging i confirma que el problema també hi passa. Si no hi passa, la causa és de l’entorn (memòria cau, CDN, configuració del servidor), no d’un plugin.

3. Aïlla per meitats

Canvia a un tema per defecte (com Storefront) i prova. Si el problema continua, desactiva la meitat dels plugins (mantenint WooCommerce i el que necessiti la prova, com la passarel·la de pagament), torna a provar i continua dividint per la meitat el grup que conté el problema.

Plugins actius Proves necessàries, dividint cada vegada
16 unes 4
32 unes 5
64 unes 6

4. Confirma la parella

Quan tinguis un sospitós, prova WooCommerce només amb aquest plugin, i després amb aquest plugin i amb el que més probablement hi interactua. Un conflicte queda confirmat quan el pots reproduir amb el conjunt més petit possible.

Registres i comprovacions tècniques

  • WooCommerce → Estat → Registres (fatal-errors) i el registre d’errors PHP.
  • WooCommerce → Estat → Estat del sistema: plugins actius i versions, plantilles sobreescrites desactualitzades.
  • Consola del navegador i panell de xarxa a la pàgina afectada.
  • Els changelogs dels plugins actualitzats al voltant de la primera aparició.

Solucions

  • Actualitza els dos components; molts conflictes ja estan arreglats en una versió posterior.
  • Ajusta la prioritat dels hooks en un petit mu-plugin de compatibilitat, perquè la lògica que vols s’executi l’última.
  • Impedeix que els scripts es carreguin on no calen, i exclou els scripts del checkout de la combinació i el diferiment.
  • Actualitza o elimina les plantilles sobreescrites desactualitzades del tema.
  • Envia un cas reproduïble als desenvolupadors: versions, passos i el conjunt mínim de plugins actius.
  • Substitueix un plugin abandonat en lloc de pedaçar-lo per sempre.
PHPmu-plugins/compat-fees.php
// Assegura que la nostra lògica de càrrecs s’executa després d’un altre plugin que els reinicia amb prioritat 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 );

Què no s’ha de fer

  • No desactivis plugins un per un a la botiga en producció: és lent, trenca altres fluxos per als clients i pots desactivar alguna cosa que processa pagaments.
  • No editis els fitxers del plugin en conflicte; el canvi desapareix amb la següent actualització.
  • No deixis un plugin important desactivat «de moment» sense entendre què feia.
  • No donis per fet que el culpable és l’últim plugin actualitzat sense provar-ho.

Quan recórrer a un expert

Recorre a un enginyer quan el conflicte implica codi a mida o extensions prèmium de les quals depens, quan només apareix a producció amb trànsit real, quan corromp dades com preus o comandes, o quan necessites que els dos components continuïn funcionant.

Preguntes freqüents

Com trobo quin plugin entra en conflicte amb WooCommerce?

Revisa primer els registres d’errors; la ruta del fitxer sol anomenar el plugin. Si no hi ha error, reprodueix el problema a staging i desactiva plugins per meitats, provant cada vegada, fins a trobar aquell la desactivació del qual ho arregla. Després prova’l només amb WooCommerce per confirmar-ho.

Puc buscar conflictes en una botiga en producció?

No desactivant plugins per a tot el lloc. El mode de resolució de problemes del plugin Health Check & Troubleshooting desactiva plugins i canvia el tema només per a la teva sessió, cosa molt més segura; tot i així, una còpia de staging continua sent el millor lloc.

Sempre és un plugin?

No. El tema, un snippet a functions.php, un mu-plugin, la memòria cau del servidor o l’optimització de scripts d’una CDN es poden comportar com un conflicte de plugins.

I si necessito els dos plugins?

Llavors l’objectiu és arreglar la interacció: canviar la prioritat d’un hook, impedir que un script es carregui en certes pàgines, afegir un petit snippet de compatibilitat o enviar un cas reproduïble als desenvolupadors.

$ descriu el problema

Tens un problema amb WooCommerce?Sol·licita una diagnosi.

Explica'ns què falla, què ha canviat darrerament i com afecta el negoci. Revisem cada sol·licitud i et recomanem el pas següent.

Sol·licitar una diagnosi Veure serveis i preus

No enviïs mai contrasenyes, claus d'API ni dades de targetes a través del formulari.

Diagnosi des de299 €

Sol·licitar una diagnosi