Recientemente un cliente nos solicitó que en su tienda virtual sólo se pudiera comprar en la península y no quería que se pudiera comprar ni en Ceuta, ni en Melilla, ni en Canarias, ni en Islas Baleares.

La solución que él nos proponía era eliminar las provincias del listado de provincias disponible en /wp-content/plugings/woocommerce/i18n/states/ES.php, concretamente eliminando las líneas 21, 28, 40, 46 y 53, pero claro esta solución sólo sería válida hasta la próxima actualización de WooCommerce, por lo que la descartamos al instante.

¿Cómo lo solucionamos?

La solución más sencilla consiste en crear una función PHP en el archivo functions.php de nuestro tema hijo o padre que se encargue de eliminar las cinco provincias solicitadas de nuestro listado de provincias disponibles en los formularios de facturación y envío de WooCommerce. Concretamente le creamos esta pequeña función PHP:

function eliminar_provincias( $provincias ) {
	unset( $provincias['ES']['ES-TF'] );
	unset( $provincias['ES']['ES-GC'] );
	unset( $provincias['ES']['ES-CE'] );
	unset( $provincias['ES']['ES-ML'] );
	unset( $provincias['ES']['ES-PM'] );

	return $provincias;
}
add_filter( 'woocommerce_states', 'eliminar_provincias' );

Gracias a este pequeño código PHP conseguimos hacer desaparecer las provincias de Ceuta, Melilla, Las Palmas, Santa Cruz de Tenerife y, por ende, evitar que ningún cliente que habitase en esas provincias pudiera realizar una compra en la tienda online de nuestro cliente.

Esperamos que os resulte útil esta solución para vuestros actuales o futuros proyectos.