Club para webmasters › Foros › Desarrollo web › Eliminar provincias a las que no deseamos mandar productos en Woocommerce
- Este debate tiene 2 respuestas, 3 mensajes y ha sido actualizado por última vez el hace 4 años, 6 meses por
Elexonic.
-
AutorEntradas
-
Muy buenos días, amigos chorris.
Ayer en el grupo de Telegram Elexonic hizo esta pregunta y yo le propuse una respuesta que aplicó con éxito y a Luis Y. también le sirvió. JoyAnimal me sugirió que lo pusiera aquí en el foro y como a los chorris de bien hay que hacerles caso, procedo a ello. Comentar que la solución que pongo aquí es algo más limpia y menos invasiva que la que sugerí en Telegram así que les daré un toque para que lo revisen.
Lo primero que vamos a hacer es ir a la ruta subrayada en rojo en la captura de pantalla que os pongo y encontrar el archivo states.php. Aquí vamos a quedarnos con la copla del código de país (En nuestro caso España) y las provincias a las que sale carísimo mandar algo y queremos discriminar (sorry por los chorris canarios y mallorquines 🙁 ). Para el código de país utilizaremos ‘ES’; dentro del país, para apuntar a Baleares ‘PM’ y a Tenerife ‘TF’.

A continuación, vamos a irnos a nuestro archivo functions.php de nuestro tema y vamos a aplicar esta función:
add_filter( 'woocommerce_states', function( $states ){ // Quitamos Tenerife unset( $states['ES']['TF'] ); // Quitamos Baleares unset( $states['ES']['PM'] ); return $states; });Lo que estamos haciendo es basicamente acceder a la variable que carga los estados (en nuestro caso las provincias) según el código de país en Woocommerce, y allí eliminar los elementos del array según su código de estado (en nuestro caso provincia), mediante la función unset de php para eliminar elementos de un array.
Quedando así el resultado:

Como podéis ver, al hacer click en el menú dropdown ya no aparecen las provincias que hemos eliminado del array.

Haciéndolo de esta manera, con un filtro desde functions.php (y no como sugerí ayer en Telegram, borrando o comentando las líneas del Array) yo espero que no se sobrescriba cuando actualicemos nuestro tema y siga activo. Sin embargo tengo entendido que para garantizar que no se borre cuando se actualice el tema, podemos crear un tema hijo y en su archivo functions.php añadir este código.
Nada más amigos chorris, espero que os sea útil. Un saludo!
JOYANIMAL por aquí!!! Genial explicado!!! Mil gracias.
Hasta un novato como yo, con temor a cualquier cosa de código, me atreveré a tocarlo algún día!!
Mis ++++ jejeje
SEOsalseANDO en https://ipettracker.es https://joyanimal.com y otros menesteres
Que crack! Muchas gracias
No entiendo como aun no tienen esto integrado en woocomerce de serie -
AutorEntradas
- Debes estar registrado para responder a este debate.