Si tienes una tienda en línea usando WooCommerce y necesitas limitar las ubicaciones de envío a ciertas ciudades, estás en el lugar correcto. En este artículo, te mostraré cómo hacerlo de manera sencilla, centrándonos en el departamento de Antioquia y permitiendo solo las ciudades de Medellín y Envigado.
Paso 1: Filtrar los Estados/Departamentos Permitidos
Primero, necesitamos asegurarnos de que solo aparezca Antioquia en la lista de departamentos al momento de realizar un pedido. Para lograr esto, usaremos el filtro woocommerce_states
.
// Filtrar los estados/departamentos permitidos
add_filter( 'woocommerce_states', 'custom_woocommerce_states' );
function custom_woocommerce_states( $states ) {
// Solo permitimos Antioquia
$states['CO'] = array(
'ANT' => 'Antioquia'
);
return $states;
}
Aquí, estamos modificando la lista de estados de Colombia para que solo muestre Antioquia. ¡Así de fácil!
Paso 2: Filtrar las Ciudades Permitidas en el Checkout
Ahora que tenemos Antioquia como única opción, vamos a especificar qué ciudades pueden seleccionarse en el checkout: solo Medellín y Envigado. Para esto, utilizaremos el filtro woocommerce_default_address_fields
.
// Filtrar las ciudades permitidas en el checkout
add_filter( 'woocommerce_default_address_fields', 'custom_override_default_address_fields' );
function custom_override_default_address_fields( $address_fields ) {
// Cambiamos el campo de ciudad a un selector
$address_fields['city']['type'] = 'select';
$address_fields['city']['options'] = array(
'' => 'Seleccione una ciudad',
'Medellín' => 'Medellín',
'Envigado' => 'Envigado'
);
return $address_fields;
}
Con este código, transformamos el campo de ciudad en un menú desplegable donde solo aparecen las ciudades que hemos definido. ¡Es una excelente manera de evitar confusiones!
Explicación
- Filtrar los Estados/Departamentos:
- La función
add_filter
permite modificar la lista de estados que WooCommerce muestra. En nuestro caso, hemos hecho que solo Antioquia esté disponible. - La función
custom_woocommerce_states
es la que realiza la magia, limitando las opciones a lo que realmente nos interesa.
- La función
- Filtrar las Ciudades en el Checkout:
- Nuevamente usamos
add_filter
, pero esta vez para los campos de dirección. - La función
custom_override_default_address_fields
se encarga de cambiar el campo de ciudad a un selector y de definir las opciones disponibles.
- Nuevamente usamos