Saltar al contenido
🚫 El índice de verificación de WooCommerce interfiere con los clientes: 4 formas de eliminar la verificación

🚫 El índice de verificación de WooCommerce interfiere con los clientes: 4 formas de eliminar la verificación

Por qué la validación del código postal es una barrera innecesaria

WooCommerce exige el campo de código postal por defecto y lo valida. Pero la realidad es esta: decenas de países de África, Centroamérica y Oceanía no utilizan códigos postales. Un comprador de Kenia o Jamaica ingresa dígitos aleatorios, recibe un error y se va.

Los campos adicionales y los errores en la página de pago afectan directamente la conversión. Según el Baymard Institute, el 17% de los compradores estadounidenses ha abandonado un proceso de pago específicamente porque era demasiado largo o complicado. Eliminar uno o dos campos innecesarios es la forma más económica de aumentar las ventas sin presupuesto publicitario.

A continuación, cuatro maneras de desactivar la validación: desde eliminar por completo el campo hasta simplemente renombrarlo. Elija según su audiencia.

💡 Resumen rápido:

  • Eliminar por completo el campo de código postal mediante unset(), para tiendas que no lo necesitan en absoluto
  • Hacer que el código postal sea opcional, para tiendas con una audiencia geográfica mixta
  • Eliminar campos innecesarios del formulario de facturación, si el código postal es solo parte del problema
  • Cambiar la etiqueta del campo por algo que el usuario entienda, intervención mínima
  • Considerar plugins si prefiere no tocar código

Método 1: Eliminar por completo el campo de código postal del pago

El método más radical y limpio. El hook woocommerce_checkout_fields otorga control total sobre todos los campos del pago: tome el array, elimine billing_postcode y devuélvalo.

Añada el código al archivo functions.php de su tema hijo:

1/**
2 * Remove the postal code field (billing_postcode) from checkout.
3 */
4add_filter( 'woocommerce_checkout_fields', 'quadlayers_remove_billing_postcode_checkout' );
5function quadlayers_remove_billing_postcode_checkout( $fields ) {
6 unset( $fields['billing']['billing_postcode'] );
7 return $fields;
8}

Qué está sucediendo aquí. El hook woocommerce_checkout_fields recibe el array completo de campos del pago: facturación, envío y pedido. La función unset() elimina la clave específica billing_postcode de la sección billing. El array se devuelve a WooCommerce sin el campo de código postal, por lo que desaparece tanto del formulario como de la validación.

Pero si su audiencia es mixta y algunos clientes sí necesitan un código postal, vea el método 2.

Método 2: Hacer que el código postal sea opcional

En lugar de eliminar el campo, puede simplemente desmarcar la bandera de obligatorio. El campo permanece en la página, pero el comprador puede omitirlo sin recibir un error.

Aquí utilizamos el filtro woocommerce_default_address_fields, que maneja la configuración predeterminada de todos los campos de dirección:

1/**
2 * Make the postal code field optional.
3 */
4add_filter( 'woocommerce_default_address_fields', 'quadlayers_optional_postcode_checkout' );
5function quadlayers_optional_postcode_checkout( $p_fields ) {
6 $p_fields['postcode']['required'] = false;
7 return $p_fields;
8}

La diferencia con el primer método está en el hook. woocommerce_default_address_fields funciona un nivel más abajo: establece las propiedades de los campos en sí (etiqueta, marcador de posición, obligatorio) antes de que lleguen a las secciones de facturación y envío. Por eso la clave aquí es simplemente postcode, sin el prefijo billing_.

Adecuado para tiendas que venden a países tanto con códigos postales como sin ellos.

Método 3: Eliminar campos innecesarios del formulario de facturación

A menudo el problema es más amplio que solo el código postal. Los campos de empresa, dirección_2, ciudad y provincia tampoco son siempre necesarios: cada uno añade fricción al pago.

El mismo hook woocommerce_checkout_fields elimina cualquier campo por su identificador. Aquí está la lista completa de claves disponibles para la sección de facturación:

1unset( $fields['billing']['billing_company'] );
2unset( $fields['billing']['billing_address_2'] );
3unset( $fields['billing']['billing_city'] );
4unset( $fields['billing']['billing_state'] );
5unset( $fields['billing']['billing_phone'] );

Los nombres se explican por sí solos. El prefijo billing_ indica que el campo pertenece al formulario de facturación. Por ejemplo, para eliminar company y address_2 junto con el código postal:

1/**
2 * Remove company, address_2 and postal code from checkout.
3 */
4add_filter( 'woocommerce_checkout_fields', 'quadlayers_remove_billing_fields' );
5function quadlayers_remove_billing_fields( $fields ) {
6 unset( $fields['billing']['billing_company'] );
7 unset( $fields['billing']['billing_address_2'] );
8 unset( $fields['billing']['billing_postcode'] );
9 return $fields;
10}

Varias llamadas a unset() conviven pacíficamente dentro de una misma función: simplemente enumere las claves que desea ocultar.

Método 4: Renombrar un campo a algo que el usuario entienda

Intervención mínima con máximo efecto. Usted no toca la validación, simplemente cambia la etiqueta críptica «Código postal» por algo que su audiencia comprenda. Por ejemplo, «Distrito» o «Código postal (si tiene uno)».

Usamos el hook gettext, el mismo que WordPress y WooCommerce utilizan para traducir la interfaz:

1/**
2 * Change checkout field labels via gettext.
3 */
4add_filter( 'gettext', 'quadlayers_billing_field_strings', 20, 3 );
5function quadlayers_billing_field_strings( $translated_text, $text, $domain ) {
6 switch ( $translated_text ) {
7 case 'Postcode / ZIP':
8 $translated_text = __( 'Area code', 'woocommerce' );
9 break;
10 }
11 return $translated_text;
12}

Si desea renombrar varios campos, agregue casos dentro del switch:

1function quadlayers_billing_field_strings( $translated_text, $text, $domain ) {
2 switch ( $translated_text ) {
3 case 'Billing details':
4 $translated_text = __( 'Order information', 'woocommerce' );
5 break;
6 case 'Ship to a different address?':
7 $translated_text = __( 'Send to other location please', 'woocommerce' );
8 break;
9 case 'Company name':
10 $translated_text = __( 'Company', 'woocommerce' );
11 break;
12 case 'Postcode / ZIP':
13 $translated_text = __( 'Area code', 'woocommerce' );
14 break;
15 }
16 return $translated_text;
17}

En la captura de pantalla anterior, el resultado de combinar enfoques: varios campos están ocultos, el campo de código postal se renombró a «Código de área» y se hizo opcional, los encabezados de las secciones de facturación y envío se reemplazaron por unos personalizados. El checkout quedó más corto y claro, sin plugins.

Plugins para gestionar campos del checkout

Si no quiere tocar functions.php, existen herramientas listas para usar. Veamos dos plugins gratuitos que resuelven el problema sin una sola línea de código.

Checkout field manager for WooCommerce

Checkout Field Manager, uno de los editores de campos de checkout más populares. Le permite agregar, eliminar y reordenar campos en las secciones de Facturación, Envío y Adicionales, todo mediante una interfaz visual.

El plugin es gratuito; la versión básica cubre los escenarios principales: ocultar un campo, hacerlo opcional, renombrarlo. Para lógica condicional (mostrar un campo solo para un país específico) y tipos de campo adicionales, existe una versión premium.

Direct Checkout for WooCommerce

Direct Checkout for WooCommerce (anteriormente llamado «WooCommerce Direct Checkout») resuelve un problema más amplio: simplifica todo el proceso de compra. Además de eliminar campos, puede: saltarse el carrito y llevar al cliente directamente al checkout, cambiar el texto del botón «Añadir al carrito», agregar funcionalidad AJAX para añadir al carrito en las páginas de producto.

Ambos plugins se actualizan regularmente y son compatibles con las versiones actuales de WordPress y WooCommerce.

⁉️🤔 Preguntas frecuentes

¿Puedo desactivar la validación solo para ciertos países?

Sí. Puede vincular la comprobación a WC()->customer->get_billing_country() dentro del filtro woocommerce_checkout_fields y aplicar unset() o required = false solo para la lista de países sin códigos postales. De esa manera, los compradores de Alemania o Estados Unidos seguirán viendo un campo obligatorio, mientras que los clientes de Kenia no.

¿Se romperá el envío después de desactivar la validación del código postal?

Depende del servicio de envío. Los servicios postales como USPS o Royal Mail usan el código postal para calcular las tarifas; para ellos, es mejor mantener el campo obligatorio o al menos visible. Si vende productos digitales o utiliza mensajería dentro de una ciudad, puede eliminar el código postal sin problema. Pruebe el cálculo de costos para cada zona de envío después de realizar los cambios.

El código no funciona; el campo de código postal sigue ahí. ¿Qué pasa?

Tres causas comunes. Primero: caché. Limpie la caché de su sitio y del navegador; después de editar functions.php, abra el checkout en modo incógnito. Segundo: otro plugin o tema sobrescribe el campo más tarde que su filtro. Intente aumentar la prioridad del hook: add_filter( 'woocommerce_checkout_fields', '...', 99 ). Tercero: está editando el functions.php equivocado. El código debe estar en el archivo del tema (hijo) activo.

¿Cómo elimino el campo de código postal sin editar functions.php?

Instale Checkout field manager for WooCommerce; le permite desactivar cualquier campo desde el panel de administración. O use el plugin Code Snippets: pegue el código PHP del método 1 como un fragmento y actívelo. Ambas opciones son más seguras que editar directamente functions.php y no se perderán cuando el tema se actualice.

¿Qué pasa si la validación del código postal está desactivada, pero WooCommerce sigue mostrando un error?

Lo más probable es que el error no lo genere el núcleo de WooCommerce, sino un plugin de terceros, como un plugin de servicio de envío o un validador de direcciones. Desactive los plugins de envío y verificación de direcciones uno por uno para encontrar al culpable. Verifique también si la validación está configurada a nivel de JavaScript en el tema; a veces los desarrolladores duplican la comprobación en el front-end.

Un ejemplo práctico del video

Vea un ejemplo en vivo de configuración de campos de checkout, desde el código hasta el resultado en el front-end:

Código o plugin: ¿cuál elegir?

Si solo necesita eliminar uno o dos campos y se siente cómodo con el editor de temas, bastan cuatro líneas de PHP del método 1 o 2. Es una solución ligera y no añade código extra al sitio.

Si tiene muchos campos que configurar, experimenta con frecuencia con el checkout o prefiere no tocar functions.php, opte por Checkout Field Manager for WooCommerce. Es gratuito y le da control visual sobre todos los campos sin el riesgo de romper el sitio por un error tipográfico en el código.

Para una optimización integral del checkout (saltar el carrito, botones AJAX, etiquetas personalizadas), Direct Checkout for WooCommerce cubre todo en un solo plugin.

La regla de oro: después de cualquier cambio, realice un pedido de prueba de principio a fin. Cinco minutos de prueba ahorran horas de resolver quejas de clientes reales.