Enrique J. Ros

Excluir envíos a Canarias, Ceuta y Melilla con WooCommerce

Cuando se tiene una tienda online está claro que uno de los objetivos es siempre aumentar la facturación. Por ello, toda venta es siempre bienvenida. Sin embargo, en algunos casos, algunas ventas pueden suponer un engorro debido a las trabas administrativas, que generalmente no compensan el margen que producen.

Hablo de los envíos a Canarias, Ceuta y Melilla, claro está. Su régimen fiscal distinto, los desorbitados costes de envío (en caso de empresas que no tengan un gran volumen de ventas que permita una tarifa ventajosa) y los trámites aduaneros provocan que más de un comercio prefiera evitar vender a estas zonas.

Así que vamos a ver cómo resolver el asunto en WooCommerce, primero mediante código (recuerda siempre hacer copia de seguridad antes de cambiar nada) y al final vemos un plugin que te permitirá seleccionar a qué provincias (de España) vas a realizar envíos, de forma que WooCommerce no acepte las demás como dirección de envío.

Limitar ciertos envíos con WooCommerce

A veces no se trata de trabas burocráticas, y simplemente un comercio no puede permitirse enviar a ciertas zonas por distintos motivos: la agencia con la que tiene una buena tarifa sólo reparte en determinadas provincias, envía alimentos o productos frescos que soportan un tiempo máximo en ruta y algunas provincias quedan demasiado lejos en términos de tiempo, etcétera.

En estos casos es muy interesante poder excluir las provincias de las zonas a las que no enviamos. Esto, que no se puede configurar con WooCommerce, podemos conseguirlo fácilmente con un poco de código gracias al filtro woocommerce_states.

El código (más abajo te dejo un plugin si prefieres hacerlo así) para que no se puedan realizar pedidos a Canarias, Ceuta y Melilla, que tendrías que añadir al final del archivo functions.php (recuerda hacer antes copia de seguridad) o, más recomendable, en tu plugin de funciones personalizadas, sería el siguiente:

function ejr_limita_envios ($provincias) {
   unset ($provincias ['ES'] ['TF']);
   unset ($provincias ['ES'] ['GC']);
   unset ($provincias ['ES'] ['CE']);
   unset ($provincias ['ES'] ['ML']);
   return $provincias;
   }

add_filter ('woocommerce_states', 'ejr_limita_envios');

¿Qué hace este código? Simplemente “captura” la lista de provincias que WooCommerce tiene de España ([‘ES’]) y las filtra, quitando Santa Cruz de Tenerife ([‘TF’]), Las Palmas ([‘GC’]), Ceuta ([‘CE’]) y Melilla ([‘ML’]), y devuelve a WooCommerce esa lista filtrada y “recortada”.

El resultado es el siguiente:

A la hora de realizar el pedido, esas cuatro provincias no aparecen en el desplegable de selección de la provincia para el envío.

Permitir sólo pedidos desde ciertas zonas

Eso está bien si queremos, como en ese caso, excluir unas pocas provincias o alguna comunidad autónoma. Pero ¿y si sólo realizamos envíos a nuestra provincia y, quizá, las provincias limítrofes? ¿Tenemos que añadir manualmente las cuarentaytantas o cincuenta provincias que queremos excluir?

Afortunadamente no, ya que eso sería un engorro. Lo mejor es hacer justo lo contrario: decirle a WooCommerce a qué provincias queremos realizar envíos, y descartar las demás.

Para ello vamos a utilizar el mismo filtro que antes, woocommerce_states, pero en lugar de quitar de la lista de provincias españolas algunas de ellas, lo que haremos será definir de nuevo esa lista como a nosotros nos convenga.

Si, por ejemplo, sólo queremos (o podemos) realizar envíos a Murcia y las provincias limítrofes el código a incluir en el functions.php o en tu plugin de funciones sería:

function ejr_definir_provincias ($provincias) {
   $provincias ['ES'] = array(
      'MU' => 'Murcia',
      'A' => 'Alicante',
      'GR' => 'Granada',
      'AL' => 'Almería',
      'AB' => 'Albacete',
      );
   return $provincias;
}
add_filter ('woocommerce_states', 'ejr_definir_provincias');

O, si sólo enviamos a Galicia:

function ejr_definir_provincias ($provincias) {
   $provincias ['ES'] = array(
      'C' => 'A Coruña',
      'LU' => 'Lugo',
      'OR' => 'Orense',
      'PO' => 'Pontevedra',
      );
   return $provincias;
}
add_filter ('woocommerce_states', 'ejr_definir_provincias');

Como de costumbre, recordarte que siempre, antes de realizar cualquier cambio en el código, realices una copia de seguridad.

Plugin para configurar a qué provincias se realizan envíos en WooCommerce

Como sé que el asunto puede resultar bastante engorroso, he creado un plugin que te permitirá seleccionar estas cosas cómodamente. Al activarlo tendrás una pantalla de opciones en Ajustes > Provincias de envío donde podrás seleccionar a qué provincias realizarás envíos (está disponible para España, Argentina y México).

Así WooCommerce no aceptará como dirección de envío ninguna de las provincias que no hayas seleccionado en el plugin. Problema resuelto de forma fácil y rápida. 🙂

El plugin para las provincias españolas lo puedes descargar directamente en el siguiente enlace:

Te dejo un vídeo donde puedes ver este plugin en funcionamiento. En estos enlaces puedes encontrar los plugins correspondientes a las provincias argentinas y a las provincias mexicanas.

Salir de la versión móvil