It can be done using a custom function hooked in woocommerce_checkout_fields
action hook, where you will define in an array your desired cities:
// Change "city" checkout billing and shipping fields to a dropdown
add_filter( 'woocommerce_checkout_fields' , 'override_checkout_city_fields' );
function override_checkout_city_fields( $fields ) {
// Define here in the array your desired cities (Here an example of cities)
$option_cities = array(
'' => __( 'Select your city' ),
'Karachi' => 'Karachi',
'Lahore' => 'Lahore',
'Faisalabad' => 'Faisalabad',
'Rawalpindi' => 'Rawalpindi',
'Gujranwala' => 'Gujranwala',
'Peshawar' => 'Peshawar',
'Multan' => 'Multan',
'Hyderabad' => 'Hyderabad',
'Islamabad' => 'Islamabad'
);
$fields['billing']['billing_city']['type'] = 'select';
$fields['billing']['billing_city']['options'] = $option_cities;
$fields['shipping']['shipping_city']['type'] = 'select';
$fields['shipping']['shipping_city']['options'] = $option_cities;
return $fields;
}
Code goes in function.php file of your active child theme (or theme) or also in any plugin file.
Tested and works.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…