WooCommerce valida els noms i valors enviats, no el que sembla veure el client. Un camp pot mostrar text però pertànyer a un input duplicat, estar deshabilitat, utilitzar un altre name o ser eliminat per JavaScript abans de l’enviament.
No desactivis tots els obligatoris. Identifica quina clau arriba buida i per què el control visible no l’aporta.
Captura l’error exacte
Anota l’etiqueta, el país, el transport, l’estat del compte, el navegador i el dispositiu. Reprodueix una vegada en una finestra privada amb dades sintètiques.
Inspecciona la resposta del checkout. WooCommerce acostuma a retornar errors estructurats encara que el desplaçament o el tema els amaguin.
Confirma si esmenta billing, shipping o un camp propi.
Compara l’input visible i l’enviat
Inspecciona name, id, valor, estat disabled i secció contenidora.
<!-- La clau enviada depèn de name, no de l'etiqueta -->
<input id="billing_phone"
name="billing_phone"
type="tel"
value="600000000">
Un input deshabilitat o sense nom no s’envia. Dos elements amb el mateix ID poden fer que scripts i etiquetes actualitzin el control equivocat.
Compara el formulari serialitzat just abans del submit amb el payload de Network. Un component pot conservar l’estat intern sense copiar-lo a l’input, o enviar un array que el callback tracta com a text. Confirma la clau i el tipus sense desar dades reals.
Prova l’autocompleció
El navegador pot pintar un valor sense disparar change o blur, que un JavaScript propi espera. És freqüent al mòbil i als gestors de contrasenyes.
Escriu-lo manualment i compara. Si així funciona, adapta el codi per llegir el valor real en enviar i escoltar els esdeveniments adequats.
No desactivis l’autocompleció globalment: millora la conversió i l’accessibilitat.
Revisa el país i l’adreça d’enviament
Canviar el país, la província o “enviar a una altra adreça” executa update_checkout. Un connector pot substituir el marcatge, perdre el valor o exigir un camp regional ocult.
Observa Elements durant l’actualització. Immediatament abans d’enviar, l’input final ha de conservar nom i valor.
Prova països amb província o codi postal obligatori i sense.
Inspecciona hooks de personalització
Cerca la clau problemàtica i els flags required al tema, connectors i snippets.
add_filter( 'woocommerce_checkout_fields', function ( $fields ) {
// La mateixa clau s'ha de renderitzar, enviar i validar.
return $fields;
} );
És habitual canviar el nom del camp visible mentre la validació comprova la clau antiga, o validar shipping quan s’utilitzen dades de billing.
Mantén la validació també al servidor.
Diferencia checkout clàssic i Blocks
El shortcode clàssic i Checkout Blocks utilitzen API d’extensió diferents. Els filtres PHP dissenyats per al clàssic poden no controlar un camp de blocs.
Confirma quina implementació fa servir la pàgina i tria una extensió compatible amb la versió actual. No barregis una plantilla clàssica copiada amb supòsits de Blocks.
Repeteix la prova en cada idioma. Les traduccions poden recrear la pàgina amb un altre bloc o plantilla antiga. La lògica ha de dependre de claus estables, no del text visible.
Comprova caché i scripts antics
Després de canviar camps, una pàgina en caché o un bundle antic pot renderitzar l’esquema d’ahir contra la validació PHP d’avui. Compara versions d’assets i capçaleres com a visitant anònim.
Purga només la pàgina i els recursos generats pertinents. No eliminis carrets actius si la sessió no intervé.
Si update_checkout substitueix el camp, torna a enllaçar-lo només amb l’API documentada i evita acumular listeners.
Repara i prova la validació
Alinea el nom renderitzat, el valor POST i la validació del servidor. Corregeix condicions i marcatge duplicat sense retirar requisits legals, fiscals, d’enviament o frau.
Prova valors buits per confirmar errors útils, després valors autocompletats i escrits manualment en ordinador i mòbil.
Completa la compra i verifica pagament, impostos, transport, estoc i correu. El manteniment recurrent ha de repetir les proves després de canvis de WooCommerce, tema, adreça, traducció o optimització.