Salta al contingut
WooRescueHQ

WooCommerce / Errors

Error fatal a WooCommerce: guia pràctica per resoldre’l

Resposta curta

El missatge que veuen els clients és genèric; l’error real és en un registre. Busca’l a WooCommerce → Estat → Registres (fatal-errors), al registre d’errors PHP o a wp-content/debug.log. Llegeix quatre coses: el tipus d’error i el missatge, la ruta del fitxer (quin plugin, tema o codi a mida), la traça (com va arribar WooCommerce a aquest codi) i l’hora (quin canvi el va provocar). Després arregla o reverteix aquest component, no WooCommerce sencer.

Símptomes

  • Hi ha hagut un error crític en aquest lloc web a la botiga, les fitxes de producte, el checkout o l’administració.
  • Una pantalla en blanc o una resposta HTTP 500.
  • Un checkout que no para de carregar perquè la seva petició falla amb un 500.
  • Un correu a l’administrador amb l’assumpte El vostre lloc web té un problema tècnic.

Causes més habituals

Missatge d’error Causa típica
Uncaught TypeError: Unsupported operand types: string + float Codi a mida que fa càlculs amb un valor que no és un número; més estricte a PHP 8
Call to a member function get_id() on bool / on null El codi dona per fet que wc_get_order() o wc_get_product() ha trobat alguna cosa
Call to undefined function … Un plugin necessari és inactiu o s’ha actualitzat sense la seva dependència
Cannot redeclare … / Cannot declare class … El mateix snippet en dos llocs, o dos plugins que inclouen la mateixa llibreria
Allowed memory size of … bytes exhausted Un bucle o una consulta que carrega massa dades, o una tasca realment pesada
Maximum execution time of … seconds exceeded Una crida externa o una consulta lenta, sovint al checkout o en una importació
Class "…" not found Una actualització incompleta, un autoloader trencat o una dependència de Composer que falta

Diagnosi

1. Aconsegueix l’error complet

Per ordre de comoditat:

  1. El correu que WordPress envia a l’administrador quan captura un error fatal.
  2. WooCommerce → Estat → Registres, origen fatal-errors.
  3. El registre d’errors PHP del tauler del hosting.
  4. wp-content/debug.log, després d’activar el registre:
PHPwp-config.php
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );      // o una ruta fora de l’arrel web
define( 'WP_DEBUG_DISPLAY', false ); // no mostris mai errors als clients
@ini_set( 'display_errors', '0' );

2. Llegeix-lo en quatre parts

Log
PHP Fatal error:  Uncaught TypeError: Unsupported operand types: string + float
  in /var/www/wp-content/plugins/custom-fees/custom-fees.php:142
Stack trace:
#0 /var/www/wp-includes/class-wp-hook.php(324): add_custom_fee(Object(WC_Cart))
#1 /var/www/wp-includes/plugin.php(205): WP_Hook->apply_filters(...)
#2 /var/www/wp-content/plugins/woocommerce/includes/class-wc-cart.php(...): do_action('woocommerce_cart_calculate_fees', ...)
  • Tipus i missatge: un TypeError, és a dir, tipus incorrectes, no un fitxer que falta.
  • Fitxer i línia: custom-fees.php:142, un plugin a mida, no WooCommerce.
  • Traça: WooCommerce hi ha arribat mentre calculava els càrrecs del carretó.
  • Hora (al prefix de la línia del registre): relaciona-la amb l’última actualització, desplegament o canvi de PHP.

3. Relaciona’l amb un canvi

Mira què va canviar just abans de la primera aparició: actualitzacions de plugins i del tema, un snippet nou, un canvi de versió de PHP, una actualització de WooCommerce que va canviar el que passa un hook. La majoria d’errors fatals són la primera execució d’un camí de codi nou després d’un canvi.

Registres i comprovacions tècniques

  • Registre fatal-errors, registre d’errors PHP, debug.log.
  • WooCommerce → Estat → Estat del sistema: versió de PHP, límit de memòria, versions de WooCommerce i de les extensions.
  • El changelog del plugin per a la versió instal·lada just abans que aparegués l’error.
  • Per a errors de memòria: quina petició, amb quina freqüència i què estava carregant.

Solucions

  • Reverteix el component que va introduir l’error a la versió anterior, com a mesura provisional, mentre es prepara la correcció real.
  • Arregla el codi de manera defensiva: comprova els valors retornats, converteix els tipus i gestiona comandes o productes inexistents.
  • Actualitza els plugins incompatibles amb les versions actuals de PHP i WooCommerce, o substitueix els abandonats.
  • Elimina duplicats: el mateix snippet en un plugin de snippets i a functions.php, o dos plugins que inclouen llibreries en conflicte.
  • Per als límits de temps i memòria, arregla el que és lent o pesat; apuja els límits només per a tasques pesades legítimes, idealment en segon pla.
PHPcustom-fees/custom-fees.php
// Abans: error fatal quan get_option() retorna un text
$fee = $cart->get_subtotal() * get_option( 'handling_rate' );

// Després: tipus explícits, i res a afegir si la taxa no està configurada
$rate = (float) get_option( 'handling_rate', 0 );
if ( $rate > 0 ) {
    $cart->add_fee( __( 'Despeses de gestió', 'my-store' ), $cart->get_subtotal() * $rate );
}

Què no s’ha de fer

  • No activis la visualització d’errors en una botiga en producció; registra’ls.
  • No editis els fitxers d’un plugin de tercers a producció. El canvi es perd amb la següent actualització i ningú no sap que existeix.
  • No reinstal·lis WooCommerce ni restauris una còpia antiga sense conèixer la causa: pots perdre comandes i quedar-te amb l’error.
  • No esborris el registre després de llegir-lo; el necessitaràs per confirmar la correcció.

Quan recórrer a un expert

Recorre a un enginyer quan l’error és dins de codi a mida o d’una extensió prèmium que no pots canviar amb seguretat, quan és intermitent, quan va aparèixer en molts fitxers després d’actualitzar PHP, o quan bloqueja el checkout o l’administració ara mateix.

Preguntes freqüents

Què vol dir «Hi ha hagut un error crític en aquest lloc web»?

WordPress ha capturat un error fatal de PHP i ha deixat de generar la pàgina. L’administrador sol rebre un correu amb detalls i un enllaç al mode de recuperació. L’error exacte és als registres de PHP o de WooCommerce.

Com activo el registre de depuració de WordPress amb seguretat?

Posa WP_DEBUG i WP_DEBUG_LOG a true i WP_DEBUG_DISPLAY a false a wp-config.php. Els errors s’escriuen a wp-content/debug.log (o a la ruta que triïs) i no es mostren mai als visitants. Desactiva-ho quan acabis.

He d’apujar el límit de memòria de PHP?

Només si l’error és «Allowed memory size exhausted» i l’operació necessita de veritat més memòria, com una importació gran. Si una pàgina normal esgota la memòria, alguna cosa està en bucle o carrega massa dades.

Per què va començar l’error després d’actualitzar PHP?

PHP 8 és més estricte: operacions que a PHP 7 només donaven avisos (aritmètica amb textos, tipus d’argument incorrectes, funcions no definides) ara llancen errors. Els plugins antics i el codi a mida solen ser els culpables.

$ 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