Es posible que hayas decidido que tu tienda online realizada con WordPress y Woocommerce solo va a enviar pedidos a determinadas provincias. Pero cuando un usuario se registra puede elegir estas provincias con las que no vamos a trabajar. En este post vamos a ver como quitar esas provincias del registro de Woocommerce para que no puedan ser seleccionadas por el cliente.
Es muy habitual que cuando montamos una tienda online, en un principio, nos planteemos no enviar pedidos a Canarias, Ceuta o Melilla. Pues lo suyo sería que el cliente no pudiera seleccionar ni Santa Cruz de Tenerife, Las Palmas, Ceuta y Melilla. Y que tampoco se pudieran realizar envios a dichas provincias.
1.- CÓMO QUITAR PROVINCIAS EN WOOCOMMERCE
En primer lugar vamos a ver como quitar provincias en Woocommerce. Lo vamos a hacer añadiendo un código al archivo functions.php
Tenéis que tener mucha precaución al modificar este archivo ya que si hacéis algo mal puede dejar de verse la web.
Mi recomendación es que hagáis una copia de seguridad de archivos y base de datos o que os guardéis una copia de seguridad del archivo functions.php
Si utilizáis un hosting como Webempresa, que es el que yo recomiendo, no tendréis mucho problema porque siempre podéis recuperar la web a como estaba hace 4 horas
El archivo functions.php lo podréis encontrar dentro del tema o theme que estéis utilizando. En el caso de utilizar el tema Divi, pues estará en wp-config/themes/Divi
Si no utilizais la plantilla Divi pues será wp-config/themes/mi_plantilla
Si usáis un tema hijo o child theme lo suyo sería que añadierais un archivo functions.php vacío (si lo tenéis aun) en el tema hijo y que ahí añadierais el código. Recordar que en el archivo functions.php vacío ha de aparecer al principio la etiqueta de apertura de código php que es: <?php
Nota importante: si no utilizáis un tema hijo, cada vez que actualicéis la plantilla tendréis que volver a añadir el código
El código a añadir para eliminar las provincias de Ceuta, Melilla, Santa Cruz de Tenerife y Las Palmas sería:
add_filter('woocommerce_states', 'eliminar_provincias');
function eliminar_provincias( $provincias ) {
unset($provincias['ES']['TF']);
unset($provincias['ES']['GC']);
unset($provincias['ES']['CE']);
unset($provincias['ES']['ML']);
return $provincias;
}
Si os fijáis en el código cada línea tipo:
unset($provincias['ES']['GC']);
Establece una provincia que hay que eliminar. En el ejemplo es Las Palmas de Gran Canaria, por eso aparece [‘GC’]
Te paso la lista de provincias para que sepas que código equivale a cada provincia:
‘C’ A Coruña
‘VI’ Álava
‘AB’ Albacete
‘A’ Alicante
‘AL’ Almeria
‘O’ Asturias
‘AV’ Ávila
‘BA’ Badajoz
‘PM’ Baleares
‘B’ Barcelona
‘BU’ Burgos
‘CC’ Cáceres
‘CA’ Cadiz
‘S’ Cantabria
‘CS’ Castellón
‘CE’ Ceuta
‘CR’ Ciudad Real
‘CO’ Córdoba
‘CU’ Cuenca
‘GI’ Girona
‘GR’ Granada
‘GU’ Guadalajara
‘SS’ Guipúzcoa
‘H’ Huelva
‘HU’ Huesca
‘J’ Jaén
‘LO’ La Rioja
‘GC’ Las Palmas
‘LE’ León
‘L’ Lleida
‘LU’ Lugo
‘M’ Madrid
‘MA’ Málaga
‘ML’ Melilla
‘MU’ Murcia
‘NA’ Navarra
‘OR’ Ourense
‘P’ Palencia
‘PO’ Pontevedra
‘SA’ Salamanca
‘TF’ Santa Cruz de Tenerife
‘SG’ Segovia
‘SE’ Sevilla
‘SO’ Soria
‘T’ Tarragona
‘TE’ Teruel
‘TO’ Toledo
‘V’ Valencia
‘VA’ Valladolid
‘BI’ => Bizkaia
‘ZA’ Zamora
‘Z’ Zaragoza
Si queréis eliminar muchas provincias de un golpe podéis utilizar este otro código que es más corto:
add_filter('woocommerce_states', 'eliminar_provincias');
function eliminar_provincias( $provincias ) {
$exclude = array('TF','GC','CE','ML');
foreach( $exclude as $item ) {
unset($provincias['ES'][$item]);
}
return $provincias;
}
En el código anterior tienes que ir introduciendo el código de las provincias que quieres eliminar en la línea $exclude= array (‘TF’,’GC’,’CE’,’ML’);
Con el siguiente código podrás hacer una lista de las provincias con las que quieres trabajar en Woocommerce. El resto de provincias no indicadas desaparecerán.
add_filter('woocommerce_states', 'lista_provincias');
function lista_provincias( $provincias ) {
$provincias ['ES'] = array(
'B' => 'Barcelona',
'M' => 'Madrid',
'MU' => 'Murcia'
); //CODIGO Y NOMBRES DE PROVINCIAS DISPONIBLES
return $provincias;
}
En el ejemplo del código anterior se han incluido solo las provincias de Barcelona, Madrid y Murcia. Tú puedes hacer la lista que creas conveniente siguiendo el mismo modelo.
Me encanta el diseño web y el mundo del ecommerce. Apasionado de Prestashop, Woocommerce/Wordpress y de la formación. Me gustaría que este blog te sirviera de ayuda para poner en marcha e ir mejorando y evolucionando tu tienda online. Ya seas un profesional del sector o no, seguro que encontrarás mucha información de valor e interés aquí.
Gracias por todas las aportaciones !! Aprendiendo poco a poco de gente como tú !! Ha fundionado a la primera. Por otro lado llevo tiempo intentando ver la forma de añadir unos gastos de envío específicos a un día en concreto ( ejemplo, sábado que los portes suban 5 € , por ejemplo) no lo he conseguido, no he visto tampoco plugins que gestionen esto, no sé si tendrás algún curso o función expuesta que puedas compartir ?
Muchas gracias !!!
Hola José Luis.
Muchas gracias por tus palabras. Woocommerce no implementa esa funcionalidad, tendrías que establecerla a través de un plugin de gastos de envío o haciendo un desarrollo a medida modificando algún plugin existente.
Me gustaría también invitarte a que eches un vistazo a mi plataforma de formación https://cursotiendaonline.com/ desde donde puedes Acceder a TODOS mis cursos online por solo 10 €/mes (Incluye ¡¡SOPORTE!!). En la plataforma tienes cursos sobre WordPress, Curso como crear una tienda online de éxito, Woocommerce, Curso alta e indexación web en google, cursos Analytics ecommerce, SEO general, SEO tiendas online, plantillas wordpress como flatsome, Divi, Astra pro, , etc. etc. Seguro que sería de gran ayuda durante la creación de tu web y después de la creación de la misma.
Me Funciono a la primera.
Muchisimas Gracias por tu Aportacion.
Hola Javí.
Me alegro que te haya servido el post para quitar provincias de Woocommerce.
Me gustaría también invitarte a que eches un vistazo a mi plataforma de formación https://cursotiendaonline.com/ desde donde puedes Acceder a TODOS mis cursos online por solo 10 €/mes (Incluye ¡¡SOPORTE!!). En la plataforma tienes cursos sobre WordPress, Curso como crear una tienda online de éxito, Woocommerce, Curso alta e indexación web en google, cursos Analytics ecommerce, SEO general, SEO tiendas online, plantillas wordpress como flatsome, Divi, Astra pro, , etc. etc. Seguro que sería de gran ayuda durante la creación de tu web y después de la creación de la misma.
Buenos días,
Gracias por el aporte, pero tengo una pequeña duda. Una tienda puede restringir el envío a ciertas provincias o como en mi caso solo a una provincia, Navarra, pero eso no quiere decir que el cliente no pueda facturar en otra provincia, es más, no creo que sea conveniente hacerlo ya que es probable que pierdas ventas simplemente por no permitir facturar a cualquier provincia de España. Un ejemplo claro puede ser una empresa con sede central en Madrid (necesita factura para Madrid) que realiza un pedido de comida a domicilio para su sede de Navarra.
¿Sabrías si existe alguna forma de crear esta restricción de provincias para el envío pero sin afectar a la dirección de facturación?
Un saludo y gracias de antemano.
Buenas.
No quites ninguna provincia.
Pero en la creación de zonas de gastos de envío utiliza todas las provincias menos la provincia a la que no quieras realizar envíos.
¿Recomiendas entonces quitar las provincias por php? Porque por Zonas de envío (para baleares, canarias, etc) no consigo que desaparezcan a la hora de que el cliente rellene sus datos de facturación o envío. Solo quiero enviar a España Península. ¡Gracias!
Hola Iris,
Que yo sepa, con las configuración de las zonas de envío no se pueden quitar provincias para que no se muestren.
Solo se pueden quitar provincias como se explica en el post o con algún plugin. Me gustaría también invitarte, si es posible, a que eches un vistazo a mi plataforma de formación https://cursotiendaonline.com/ desde donde puedes Acceder a TODOS mis cursos online por solo 10 €/mes (Incluye ¡¡SOPORTE!!). En la plataforma tienes cursos sobre WordPress, Woocommerce, SEO Tiendas online, Analytics ecommerce, Cursos sobre Divi, Astra Pro, Elementor, Flatsome, Cursos sobre Mailchimp, blog WordPress, etc. etc.
Hola, quiero hacer envíos a España y Portugal solo en Península. Para España tu código me ha servido perfectamente y para Portugal, he usado un plugin para añadir Provincias pero aunque no he añadido Azores y Madeira me siguen saliendo al poner los datos de envío.
he entrado en la ruta por FTP para ver el código de Portugal y sus provincias pero veo mil países menos Portugal, desde luego no empieza por P, no lo entiendo! simplemente sería algo así? Hay algún lugar que no sea el Ftp, un directorio o algo así de todos los países?
add_filter(‘woocommerce_states’, ‘eliminar_provincias’);
function eliminar_provincias( $provincias ) {
unset($provincias[‘PORTUGAL’][‘AZORES’]);
unset($provincias[‘PORTUGAL’][‘MADEIRA’]);
return $provincias;
}
Buenas,
Es posible, que el plugin que has instalado guarde las provincias en otro sitio.
Yo lo que haría sería acudir al soporte del plugin que te has instalado para añadir las provincias de Portugal
Buenas, quiero hacer envíos a toda la península, tanto España como Portugal. Con tu método puedo quitar Canarias, Baleares, Ceuta y Melilla, pero no consigo encontrar qué códigos tendría que añadir para Madeira y Azores, ¿me puedes echar un cable? Muchísimas gracias.
Hola Sergio,
Cuando se añade el país Portugal a Woocommerce no se añaden provincias o regiones.
Añadir provincias de países es un poco más complicado que quitar provincias de España.
También es cierto que hay plugins para poder añadir provincias a Woocommerce.
Te dejo este post que creo explica bastante bien el asunto: Añadir regiones en Woocommerce
Muchas gracias por responder tan rápido. Me he explicado mal. Lo que quiero es quitar las islas portuguesas (Azores y Madeira).
Buenas,
pues tienes que usar el mismo procedimiento pero tienes que buscar el código de esas provincias que quieres eliminar.
Seguramente lo podrás ver en la ruta /woocommerce/i18n/states/
En el código tendrías que cambiar el código país y el de las provincias o regiones
Soy muy novato y no se como entrar en esta ruta que comentas. Llevo unos días buscando los códigos en ratos libres por Google y no hay forma. Muchas gracias de todas formas. Por cierto perdona por firmar como Silvia en el segundo comentario, los caminos del «autocompletar» son misteriosos.
Buenas,
has de entrar vía FTP o a través del administrador de archivos del panel de administración de tu empresa de hosting.
Hola,
He usado tu código y funciona perfectamente.
De paso me gustaría preguntarte que te parece algo que me esta ocurriendo: Quiero hacer envios a Canarias, Ceuta y Melilla. Tengo los precios puestos con la opción «escribir precios sin impuestos». He creado las regiones correspondientes y las zonas de envio. Todo funciona bien pero cuando un cliente elige zona de envio Canarias, por ejemplo, los precios de toda la tienda me cambian y se muestran sin IVA. El problema es que tambien tengo puesto el sufijo IVA incluido y creo que todo se vuelve confuso porque de repente si el cliente decide seguir navegando abandonando el carrito (cosa muy frecuente), los precios que visualiza ya no son los mismos, aparecen sin iva pero con el sufijo IVA incluido. No es que quiera que desaparezca el sufijo, lo que me gustaría es que no cambiase los precios, obviamente. Uso el tema DIVI y Woocommerce.
¿Conoces que esto le pase a más gente?¿Tiene solución, estoy haciendo algo mal?
Y para terminar aprovechando que estoy aqui,….¿Hay alguna manera de forzar a que el cliente ponga la provincia, ciudad y código postal correctos?
O sea, que si una persona pone provincia de Murcia, tenga que poner una localidad de esa provincia y un código postal que pertenezca a esa localidad. Actualmente tu puedes poner en los campos lo que te de la gana que te lo da como correcto…..
Muchas gracias!
Buenas,
¿A qué te refieres cuando dices que cuando un cliente elige zona de envío Canarias? ¿te refieres cuando lo pone en la calculadora de gastos de envío? ¿te refieres cuando un cliente se registra para hacer una compra y pone que es de Canarias?
Cuando un cliente se registra y loguea y pone que es de canarias los precios de la tienda deben salir con IVA O como a ti te aparece. Pero eso solo le aparece a la persona que está logueada, a cualquier otro visitante no logueado le aparecerán los precios con IVA. El que es de Canarias ya sabe que su IVA es cero. Además lo podrá ver claramente en el carrito (mi recomendación es que en el carrito se muestren los precios con el IVA no incluido).
Para la verificación de codigos postales que coincidan con provincias, etc. tendrás que buscar algún plugin que realice dichas verificaciones, yo no conozco ninguno.
Un saludo
Gracias por contestar.
El precio cambia sin estar el usuario registrado, solamente yendo al carrito, un usuario sin loguear ni registrar, pone una direccion y selecciona la opción envio a Canarias y directamente´ sin llegar a efectuar la compra, todos los precios de la tienda cambian.
A veces la gente suele ir hasta el checkout para comprobar los gastos de envio o sencillamente, se arrepienten en el ultimo instante y deciden seguir mirando…cuando vuelve a la tienda en ese momento, los precios han cambiado y aparecen sin Iva.
Puede darse el caso de que el cliente ni siquiera sea de Canarias y le haya dado por error a Canarias, en este caso estara visualizando precios sin Ïva con la coletilla iva incluido…..no se, me parece un lio y que puede crear confusion.
A mi me gustaria que los precios no cambiasen nunca en la tienda y que solo se viera reflejado el descuento de iva en el carrito y en el checkout, como la mayoria de tiendas que conozco.
Supongo que sera un problema de Woocommerce en si. Yo lo uso porque me parece muy sencillo, tengo el Lifetime de DIvi y me facilita la vida en muchos sentidos pero me parece una plataforma muy poco estable y con muchas carencias. Se puede ver reflejado por ejemplo en el checkout, al hilo de mi otra consulta, donde no es capaz de forzar direcciones correctas, o sea, que Provincias, ciudades y Códigos Postales sean correctos.
Muchas gracias por contestarme,
Saludos
Buenas,
parece que el funcionamiento es así, si un cliente usa la calculadora de envíos y dice que es de canarias pues los precios aparecen Sin IVA porque eso son los precios que se le van a aplicar a el.
En cualquier caso el porcentaje de personas que elijan canarias en la calculadora de envío sin ser de canarias será mínimo, pero mínimo.
En cuanto a que Woocommerce no es capaz de forzar la verificación de provincias, ciudades y códigos postales, es lo habitual (que no es lo que debería de ser),ya que ni Prestashop, ni Magento, ni Opencart, tienen esa características. Es decir, ninguno de los ecommerce más utilizados hacen esa verificación.
Un saludo