Al querer personalizar Woocommerce, a veces nos damos cuenta que nuestro país no tiene los estados o regiones asignados correctamente, es decir no viene por defecto y por ende debemos ponerlo a mano usando las diferentes técnicas disponibles que hay en la red o que nos permite Woocommerce.
Woocommerce guarda todas las regiones en la ruta /woocommerce/i18n/states/ y es ahí donde primero se buscan, entonces debemos crear un file con el mismo código del país y con la misma estructura.
Ejemplo: Colombia no tiene regiones en Woocommerce, así que crearemos sus regiones creando un archivo CO.php en la ruta ya mencionada.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
<?php /** * Colombia provinces * * @author GoPymes SAC * @category i18n * @package WooCommerce/i18n * @version 1.0.0 */ global $states; $states['CO'] = array( 'AM' => __( 'Amazonas', 'woocommerce' ), 'AN' => __( 'Antioquía', 'woocommerce' ), 'AR' => __( 'Arauca', 'woocommerce' ), 'AT' => __( 'Atlántico', 'woocommerce' ), 'BO' => __( 'Bogotá', 'woocommerce' ), 'BL' => __( 'Bolivar', 'woocommerce' ), 'BA' => __( 'Boyacá', 'woocommerce' ), 'CL' => __( 'Caldas', 'woocommerce' ), 'CQ' => __( 'Caquetá', 'woocommerce' ), 'CS' => __( 'Casanare', 'woocommerce' ), 'CU' => __( 'Cauca', 'woocommerce' ), 'CE' => __( 'Cesar', 'woocommerce' ), 'CH' => __( 'Chocó', 'woocommerce' ), 'CO' => __( 'Córdoba', 'woocommerce' ), 'CU' => __( 'Cundinamarca', 'woocommerce' ), 'GI' => __( 'Guainía', 'woocommerce' ), 'GV' => __( 'Guaviare', 'woocommerce' ), 'HU' => __( 'Huila', 'woocommerce' ), 'LG' => __( 'La Guajira', 'woocommerce' ), 'MA' => __( 'Magdalena', 'woocommerce' ), 'ME' => __( 'Meta', 'woocommerce' ), 'NA' => __( 'Nariño', 'woocommerce' ), 'NS' => __( 'Norte de Santander', 'woocommerce' ), 'PU' => __( 'Putumayo', 'woocommerce' ), 'QU' => __( 'Quindío', 'woocommerce' ), 'RI' => __( 'Risaralda', 'woocommerce' ), 'SA' => __( 'San Andrés y Providencia', 'woocommerce' ), 'ST' => __( 'Santander', 'woocommerce' ), 'SU' => __( 'Sucre', 'woocommerce' ), 'TO' => __( 'Tolima', 'woocommerce' ), 'VC' => __( 'Valle del Cauca', 'woocommerce' ), 'VA' => __( 'Vaupés', 'woocommerce' ), 'VI' => __( 'Vichada', 'woocommerce' ) ); |
Woocommerce también nos brinda un hook para agregar, modificar o quitar algunos estados al país que quisiéramos, para ello usaremos el filtro “woocommerce_states“. Este filtro lo ejecuta una vez que ya revisó el punto 1 de este ranking.
Ejemplo: siguiendo la línea de Colombia, vamos a agregar sus regiones usando este hook.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?php add_filter( 'woocommerce_states', 'goowoo_add_states' ); function goowoo_add_states( $states ) { $states['CO'] = array( 'AM' => __( 'Amazonas', 'woocommerce' ), 'AN' => __( 'Antioquía', 'woocommerce' ), 'AR' => __( 'Arauca', 'woocommerce' ), 'AT' => __( 'Atlántico', 'woocommerce' ), 'BO' => __( 'Bogotá', 'woocommerce' ), 'BL' => __( 'Bolivar', 'woocommerce' ), 'BA' => __( 'Boyacá', 'woocommerce' ), 'CL' => __( 'Caldas', 'woocommerce' ), 'CQ' => __( 'Caquetá', 'woocommerce' ), 'CS' => __( 'Casanare', 'woocommerce' ), 'CU' => __( 'Cauca', 'woocommerce' ), 'CE' => __( 'Cesar', 'woocommerce' ), 'CH' => __( 'Chocó', 'woocommerce' ), 'CO' => __( 'Córdoba', 'woocommerce' ), 'CU' => __( 'Cundinamarca', 'woocommerce' ), 'GI' => __( 'Guainía', 'woocommerce' ), 'GV' => __( 'Guaviare', 'woocommerce' ), 'HU' => __( 'Huila', 'woocommerce' ), 'LG' => __( 'La Guajira', 'woocommerce' ), 'MA' => __( 'Magdalena', 'woocommerce' ), 'ME' => __( 'Meta', 'woocommerce' ), 'NA' => __( 'Nariño', 'woocommerce' ), 'NS' => __( 'Norte de Santander', 'woocommerce' ), 'PU' => __( 'Putumayo', 'woocommerce' ), 'QU' => __( 'Quindío', 'woocommerce' ), 'RI' => __( 'Risaralda', 'woocommerce' ), 'SA' => __( 'San Andrés y Providencia', 'woocommerce' ), 'ST' => __( 'Santander', 'woocommerce' ), 'SU' => __( 'Sucre', 'woocommerce' ), 'TO' => __( 'Tolima', 'woocommerce' ), 'VC' => __( 'Valle del Cauca', 'woocommerce' ), 'VA' => __( 'Vaupés', 'woocommerce' ), 'VI' => __( 'Vichada', 'woocommerce' ) ); return $states; } ?> |
Una 3era opción válida es usando este plugin pues como ves nos permite agregarle 2 niveles más y además asignarle un precio de envío.
Con Shipping Price by Place podrás no sólo agregarle las regiones a tu país sino también podrás asignarle un costo individual por el envío.
Si tienen dudas u observaciones, aquí tiene las cajas de comentarios.
Suscribete y tendrás los más recientes posts en tu email
Hola Amigo, soy de colombia y estoy precisamente buscando como poder asignar diferentes precios no solo a estados, si no a ciudades, este plugin funciona para eso? lo que me preocupa un poco es que he usado varios y las reglas de envío solo aplican para cuando ya se tiene una cuenta creada en el sistema, para un cliente nuevo, al seleccionar su ciudad no se refresca el valor del envío, alguna ayuda? muchisimas gracias por tu tiempo.
Buen día Jorge.
Claro!, este plugin cambia el precio de acuerdo a la ciudad que escojas, puedes ver el video tutorial aqui:
http://shop.gopymes.pe/documentation/docs-woocommerce-shipping-price-by-place/
Saludos
Muchas gracias por tu respuesta, voy a mirar el video, alguna duda puedo molestarte? feliz tarde!
Claro!, puedes comentar aquí o escribirnos a support[at]gopymes.pe
Saludos
Hola como estas? Es compatible con la Versión 2.6.4?
Buen día Ignacio.
Claro!, es compatible con Woo 2.6.x
Para mayor detalle puedes escribirnos a support [at] gopymes.pe
Saludos
Hola, dónde debe ser incorporado el Hook de las ciudades para que aparezca en la tienda?
Que tal.
Todo eso debe estar en el file functions.php de tu theme activo.
Saludos
Hola gracias por el tip.
Hay alguna forma de que no sea una proviciona sino una localidad es decir un departamento y que al seleccionar el departamento por ejemplo te muestre los municipios?
Hola Luis.
Puedes usar el plugin https://www.letsgodev.com/product/woocommerce-shipping-price-by-place/
Te permite agregar 2 zonas adicionales al que nos brinda Woocommerce, puedes llamarlos departamentos o provincias, barrios o distritos.
En el checkout aparecerá un sólo select con estas 2 zonas que agregaste y cada vez que elijas uno, se va a calcular el costo de envío que colocaste por cada zona.
Saludos
¿Como podría hacer uno plugin con la segunda opción?
Hola Valter.
Si tienes conocimientos del codex de WP podrás realizar facilmente un plugin con la opción 2, de lo contrario puedes poner ese código en tu functions.php de tu theme activo con los mismos resultados.
Saludos
Muchas gracias, pero si quiero agregar departamentos y ciudades?
Que tal amigo.
Bueno con la opción 2 sólo puedes agregar departamentos al país.
Si deseas más niveles te recomiendo usar el plugin : https://www.letsgodev.com/product/woocommerce-shipping-price-by-place/
Saludos
Que tal estimado Alexander, estoy buscando un plugin que por lo menos me pueda brindar 3 niveles, sucede que en Peru estamos divididos por Departamento, provincia y distrito.
Me podrías indicar si existe un plugin que me pueda ayudar con esto?.
Quedo atento, muchas gracias.
Hola Ericsson.
Justamente este plugin te sirve.
Pais y Departamente te lo brinda Woocommerce.
Provincia y Distrito te lo brinda este plugin Shipping Price by Place.
Saludos
Saludos men, no he podido aplicar esto, no me muestra ningun estado, nisiquiera de otro pais, tienes algun inbox?
tengo instalado WordPress 4.9.12
Versión de WooCommerce: 3.8.0
el plugin de Shipping Price by Place
Me funciona perfecto esta extensión. Compré 2 licencias y van súper bien.
Quisiera saber si tienes algo desarrollado para validar extraer nombre completo del cliente de reniec al colocar el DNI en el front page.
Otra cosa, mía licencia todavía están dentro del 1er año de actualizaciones, pero veo que la extensión ha cambiado de página web. Cómo si ahora el dueño fuese otra empresa.
Me confirmas por favor, gracias!
Hola, estoy diseñando la web de un pequeño restaurante local: para servicio en una ciudad… En Colombia, tenemos barrios y mi interés es que en vez de las ciudades aparezcan los barrios ¿alguna idea?
Hola que tal.
Muchas gracias por la información para cargar la información de los distritos. Cargue lo indicado en el functions.php pero todo funciona normal cuando pruebo la página mientras estoy logueado en WordPress pero, cuando ingreso a una pagina incógnito o amigos que no están registrados en la página, el tema de los costos de envío no cargan.
Por favor, me puedes apoyar con este tema? De antemano, muchas gracias.
Slds.