Tutoriales

Evitar vender a determinadas provincias con WooCommerce

Por temas de coste de envío y de aduanas, es frecuente que los clientes me pidan expresamente que no se pueda vender a determinados destinos. Normalmente la petición es algo así:

  • No vender a las islas Canarias, provincias de Gran Canaria y Tenerife
  • No vender a Ceuta y Melilla
  • No vender a los archipiélagos de Azores y/o Madeira

Y es que se puede hacer de forma más o menos sencilla que estos destinos no tengan envíos. Cuando ajustas las zonas de envío en WooCommerce, puedes crear en España una zona llamada península e islas Baleares y no creas zonas para Canarias, Ceuta y Melilla y claro, los clientes no pueden pedir que se le envíe allí.

Pero claro, como aparece en la lista, genera frustración y soporte extra, así que la idea es directamente evitar la venta a estos destinos. WooCommerce permite restringir la venta por destinos a países pero no a partes de países así que tenemos que tirar de código para resolver este tema fácilmente.

Modificar las provincias de un país en WooCommerce

En WooCommerce, los códigos de las provincias (o estados, dependiendo del país) siguen el estándar ISO 3166-2.

  • ISO 3166-1 define los códigos de los países, por ejemplo, ES para España o MX para México.
  • ISO 3166-2 define los códigos de subdivisiones dentro de cada país (por ejemplo, ES-M para Madrid en España, US-CA para California en EE.UU.
  • WooCommerce guarda en un array de dos dimensiones estos datos, la primera parte el país, la segunda la provincia con el código que representa a esta sin el código del país, por ejemplo, Ceuta sería $woocommerce_states[‘ES’][‘CE’]

WooCommerce usa estos códigos en su base de datos para gestionar regiones en direcciones de envío y facturación, así que si usamos el hook woocommerce_states, podemos hacer justo lo que hemos comentado.

Tan sencillo como esto:

add_filter ('woocommerce_states', function( $provincias ){
   unset( $provincias['ES']['CE'] );
   unset( $provincias['ES']['ML'] );
   unset( $provincias['ES']['TF'] );
   unset( $provincias['ES']['GC'] );
   unset( $provincias['PT']['MD'] );
   unset( $provincias['PT']['AC'] );
   return $provincias;
} );

Aquí eliminamos todos los puntos que hemos comentado arriba pero podríais elegir el subconjunto que queráis o si lo preferís otras provincias. Por cierto, si no tenéis por defecto los distritos de Portugal en vuestro sistema, que así es como se llama el equivalente a provincias, podéis instalar este plugin Portugal States (Distritos) for WooCommerce. La forma más sencilla de tenerlos disponibles a golpe de clic.

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

Francisco Javier Carazo Gil

Entradas recientes

¿Por qué falla Bizum en WooCommerce? 9 causas

Por qué falla Bizum WooCommerce: detecta errores de credenciales, firma, entorno y pedidos para recuperar…

hace % días

Plugin gratuito Redsys WordPress: qué revisar

Elige un plugin gratuito Redsys WordPress con criterio: compatibilidad, seguridad, configuración bancaria y límites para…

hace % días

Qué necesito para activar CECA Online en mi web

¿Qué necesito para activar CECA Online? Revisa contrato bancario, datos del terminal, seguridad, pruebas y…

hace % días

Cómo elegir una pasarela para suscripciones

Aprende a elegir una pasarela para suscripciones en WordPress: revisa recurrencia, compatibilidad, seguridad y soporte…

hace % días

Plugin Bizum WordPress para cobrar con control

Elige un plugin Bizum WordPress compatible con tu flujo de venta, configura la pasarela bancaria…

hace % días

Cómo aceptar CECA en reservas de WordPress

Aprende cómo aceptar CECA en reservas WordPress, configurar pagos seguros y confirmar cada reserva sin…

hace % días