Tras el aviso de uno de nuestros clientes, hemos detectado un fallo en WooCommerce que, como en el caso de este cliente, puede generar grandes dolores de cabeza.

El error, que ya ha sido notificado al equipo de WooCommerce para que lo resuelvan lo antes posible, consiste en que puedes introducir cualquier cosa en el campo código postal sin que WooCommerce detecte ningún tipo de error.

En el caso de ComeFruta.es, el cliente que nos ha notificado el fallo, el código postal se torna en un campo transcendental dado que ellos generan automáticamente un archivo CSV con toda la información de los pedidos a procesar ese día, dicho archivo es enviado automáticamente a la empresa de logística, y ésta utiliza el campo código postal para procesar los envíos. Por lo tanto, al ser tan fundamental este campo, el otro día le saltaron todas las alarmas al detectar un pedido en el que el cliente había puesto la palabra Madrid en lugar de los cinco dígitos correspondientes al código postal de su zona.

¿Cómo lo solucionamos?

Mientras que los chicos de WooCommerce hacen su trabajo y corrigen este error, vamos a ver cómo podemos poner fin a este tipo de errores.

Como casi siempre vamos a añadir una pequeña función PHP en el archivo functions.php de nuestro tema padre o hijo con el siguiente código PHP:

//Validando el campo Código postal
function validando_codigo_postal() {
	//Código postal
	$muestra_error = false;
	if ( isset( $_POST['billing_postcode'] ) && ( !is_numeric( $_POST['billing_postcode'] ) || strlen( $_POST['billing_postcode'] ) != 5 ) ) { //Formulario de facturación
		$muestra_error = true;
	}
	if ( ( isset( $_POST['shipping_postcode'] ) && trim( $_POST['shipping_postcode'] ) != '' ) && ( !is_numeric( $_POST['shipping_postcode'] ) || strlen( $_POST['shipping_postcode'] ) != 5 ) ) {
		$muestra_error = true;
	}
	if ( $muestra_error ) {
		wc_add_notice( __( 'Por favor, introduce un código postal válido.' ), 'error' );
	}
}
add_action( 'woocommerce_checkout_process', 'validando_codigo_postal' );

Como bien sabemos en España usamos códigos postales numéricos de cinco dígitos, pues bien este código PHP se encarga de controlar que se ha introducido un código postal con esas dos características tanto en el formulario facturación como en el formulario de envío, en caso de que el cliente lo haya utilizado.

Esperamos que tengamos que utilizar esta solución de forma extraordinariamente temporal y que en la próxima actualización de WooCommerce hayan resuelto totalmente este error. Mientras no nos queda otra que mantener bajo control este tipo de