WooCommerce valida nombres y valores enviados, no lo que parece ver el cliente. Un campo puede mostrar texto pero pertenecer a un input duplicado, estar deshabilitado, usar otro name o ser eliminado por JavaScript antes del envío.
No desactives todos los obligatorios. Identifica qué clave llega vacía y por qué el control visible no la aporta.
Captura el error exacto
Anota etiqueta, país, transporte, estado de cuenta, navegador y dispositivo. Reproduce una vez en ventana privada con datos sintéticos.
Inspecciona la respuesta del checkout. WooCommerce suele devolver errores estructurados aunque el scroll o el tema los oculte.
Confirma si menciona billing, shipping o un campo propio.
Compara el input visible y el enviado
Inspecciona name, id, valor, estado disabled y sección contenedora.
<!-- La clave enviada depende de name, no de la etiqueta -->
<input id="billing_phone"
name="billing_phone"
type="tel"
value="600000000">
Un input deshabilitado o sin nombre no se envía. Dos elementos con el mismo ID pueden hacer que scripts y etiquetas actualicen el equivocado.
No guardes direcciones ni teléfonos reales en capturas.
Compara el formulario serializado inmediatamente antes del submit con el payload que aparece en Network. Un componente visual puede mantener su estado interno sin copiarlo al input, o varias casillas pueden enviar un array que el callback trata como texto. El diagnóstico debe confirmar tanto la presencia de la clave como su tipo.
Prueba el autocompletado
El navegador puede pintar un valor sin disparar change o blur, que un JavaScript propio espera. Es frecuente en móvil y gestores de contraseñas.
Escribe manualmente y compara. Si así funciona, adapta el código para leer el valor real al enviar y escuchar eventos adecuados.
No desactives el autocompletado globalmente: mejora conversión y accesibilidad.
Revisa país y dirección de envío
Cambiar país, provincia o “enviar a otra dirección” ejecuta update_checkout. Un plugin puede reemplazar el marcado, perder el valor o exigir un campo regional oculto.
Observa Elements durante la actualización. Justo antes de enviar, el input final debe conservar nombre y valor.
Prueba países con y sin provincia o código postal obligatorio.
Inspecciona hooks de personalización
Busca la clave problemática y flags required en tema, plugins y snippets.
add_filter( 'woocommerce_checkout_fields', function ( $fields ) {
// La misma clave debe renderizarse, enviarse y validarse.
return $fields;
} );
Es común renombrar el campo visible mientras la validación comprueba la clave antigua, o validar shipping cuando se usan datos de billing.
Mantén la validación también en servidor.
Distingue checkout clásico y Blocks
El shortcode clásico y Checkout Blocks usan API de extensión diferentes. Los filtros PHP diseñados para clásico pueden no controlar un campo de bloques.
Confirma qué implementación usa la página y elige una extensión compatible con la versión actual.
No mezcles una plantilla clásica copiada con supuestos de Blocks.
Repite la prueba en cada idioma publicado. Las traducciones pueden recrear la página con otro bloque, conservar una plantilla anterior o cambiar etiquetas usadas incorrectamente como identificadores. La lógica debe depender de claves estables, no del texto visible que recibe el cliente.
Comprueba caché y scripts antiguos
Tras cambiar campos, una página cacheada o bundle antiguo puede renderizar el esquema de ayer contra la validación PHP de hoy. Compara versiones de assets y cabeceras como visitante anónimo.
Purga solo la página y recursos generados relevantes. No borres carritos activos si la sesión no interviene.
Verifica de nuevo cuando la caché ya esté poblada.
Si update_checkout reemplaza el campo, vuelve a enlazar únicamente mediante la API o evento documentado y evita acumular listeners en cada actualización. Dos controladores pueden borrar, copiar o validar el valor en un orden diferente según el país seleccionado.
Repara y prueba la validación
Alinea nombre renderizado, valor POST y validación del servidor. Corrige condiciones y marcado duplicado sin retirar requisitos legales, fiscales, de envío o fraude.
Prueba valores vacíos para confirmar errores útiles, después autocompletados y escritos manualmente en escritorio y móvil.
Completa la compra y verifica pago, impuestos, transporte, stock y email. El mantenimiento recurrente debe repetir estas pruebas después de cambios de WooCommerce, tema, dirección, traducción u optimización.