Skip to content

Instantly share code, notes, and snippets.

@jwad93
Last active February 9, 2021 10:24
Show Gist options
  • Save jwad93/33f08821423926f432880a518131023b to your computer and use it in GitHub Desktop.
Save jwad93/33f08821423926f432880a518131023b to your computer and use it in GitHub Desktop.
Add cities (of Pakistan) dropdown to WooCommerce checkout form
/**
* Change the checkout city field to a dropdown field.
*/
function jeroen_sormani_change_city_to_dropdown( $fields ) {
$city_args = wp_parse_args( array(
'type' => 'select',
'options' => array(
'Abbottabad' => 'Abbottabad',
'Adezai' => 'Adezai',
'Ali Bandar' => 'Ali Bandar',
'Amir Chah' => 'Amir Chah',
'Attock' => 'Attock',
'Ayubia' => 'Ayubia',
'Bahawalpur' => 'Bahawalpur',
'Baden' => 'Baden',
'Bagh' => 'Bagh',
'Bahawalnagar' => 'Bahawalnagar',
'Burewala' => 'Burewala',
'Banda Daud Shah' => 'Banda Daud Shah',
'Bannu district|Bannu' => 'Bannu district|Bannu',
'Batagram' => 'Batagram',
'Bazdar' => 'Bazdar',
'Bela' => 'Bela',
'Bellpat' => 'Bellpat',
'Bhag' => 'Bhag',
'Bhakkar' => 'Bhakkar',
'Bhalwal' => 'Bhalwal',
'Bhimber' => 'Bhimber',
'Birote' => 'Birote',
'Buner' => 'Buner',
'Burj' => 'Burj',
'Chiniot' => 'Chiniot',
'Chachro' => 'Chachro',
'Chagai' => 'Chagai',
'Chah Sandan' => 'Chah Sandan',
'Chailianwala' => 'Chailianwala',
'Chakdara' => 'Chakdara',
'Chakku' => 'Chakku',
'Chakwal' => 'Chakwal',
'Chaman' => 'Chaman',
'Charsadda' => 'Charsadda',
'Chhatr' => 'Chhatr',
'Chichawatni' => 'Chichawatni',
'Chitral' => 'Chitral',
'Dadu' => 'Dadu',
'Dera Ghazi Khan' => 'Dera Ghazi Khan',
'Dera Ismail Khan' => 'Dera Ismail Khan',
'Dalbandin' => 'Dalbandin',
'Dargai' => 'Dargai',
'Darya Khan' => 'Darya Khan',
'Daska' => 'Daska',
'Dera Bugti' => 'Dera Bugti',
'Dhana Sar' => 'Dhana Sar',
'Digri' => 'Digri',
'Dina City|Dina' => 'Dina City|Dina',
'Dinga' => 'Dinga',
'Diplo' => 'Diplo',
'Diwana' => 'Diwana',
'Dokri' => 'Dokri',
'Drosh' => 'Drosh',
'Duki' => 'Duki',
'Dushi' => 'Dushi',
'Duzab' => 'Duzab',
'Faisalabad' => 'Faisalabad',
'Fateh Jang' => 'Fateh Jang',
'Ghotki' => 'Ghotki',
'Gwadar' => 'Gwadar',
'Gujranwala' => 'Gujranwala',
'Gujrat' => 'Gujrat',
'Gadra' => 'Gadra',
'Gajar' => 'Gajar',
'Gandava' => 'Gandava',
'Garhi Khairo' => 'Garhi Khairo',
'Garruck' => 'Garruck',
'Ghakhar Mandi' => 'Ghakhar Mandi',
'Ghanian' => 'Ghanian',
'Ghauspur' => 'Ghauspur',
'Ghazluna' => 'Ghazluna',
'Girdan' => 'Girdan',
'Gulistan' => 'Gulistan',
'Gwash' => 'Gwash',
'Hyderabad' => 'Hyderabad',
'Hala' => 'Hala',
'Haripur' => 'Haripur',
'Hab Chauki' => 'Hab Chauki',
'Hafizabad' => 'Hafizabad',
'Hameedabad' => 'Hameedabad',
'Hangu' => 'Hangu',
'Harnai' => 'Harnai',
'Hasilpur' => 'Hasilpur',
'Haveli Lakha' => 'Haveli Lakha',
'Hinglaj' => 'Hinglaj',
'Hoshab' => 'Hoshab',
'Islamabad' => 'Islamabad',
'Islamkot' => 'Islamkot',
'Ispikan' => 'Ispikan',
'Jacobabad' => 'Jacobabad',
'Jamshoro' => 'Jamshoro',
'Jhang' => 'Jhang',
'Jhelum' => 'Jhelum',
'Jamesabad' => 'Jamesabad',
'Jampur' => 'Jampur',
'Janghar' => 'Janghar',
'Jati(Mughalbhin)' => 'Jati(Mughalbhin)',
'Jauharabad' => 'Jauharabad',
'Jhal' => 'Jhal',
'Jhal Jhao' => 'Jhal Jhao',
'Jhatpat' => 'Jhatpat',
'Jhudo' => 'Jhudo',
'Jiwani' => 'Jiwani',
'Jungshahi' => 'Jungshahi',
'Karachi' => 'Karachi',
'Kotri' => 'Kotri',
'Kalam' => 'Kalam',
'Kalandi' => 'Kalandi',
'Kalat' => 'Kalat',
'Kamalia' => 'Kamalia',
'Kamararod' => 'Kamararod',
'Kamber' => 'Kamber',
'Kamokey' => 'Kamokey',
'Kanak' => 'Kanak',
'Kandi' => 'Kandi',
'Kandiaro' => 'Kandiaro',
'Kanpur' => 'Kanpur',
'Kapip' => 'Kapip',
'Kappar' => 'Kappar',
'Karak City' => 'Karak City',
'Karodi' => 'Karodi',
'Kashmor' => 'Kashmor',
'Kasur' => 'Kasur',
'Katuri' => 'Katuri',
'Keti Bandar' => 'Keti Bandar',
'Khairpur' => 'Khairpur',
'Khanaspur' => 'Khanaspur',
'Khanewal' => 'Khanewal',
'Kharan' => 'Kharan',
'kharian' => 'kharian',
'Khokhropur' => 'Khokhropur',
'Khora' => 'Khora',
'Khushab' => 'Khushab',
'Khuzdar' => 'Khuzdar',
'Kikki' => 'Kikki',
'Klupro' => 'Klupro',
'Kohan' => 'Kohan',
'Kohat' => 'Kohat',
'Kohistan' => 'Kohistan',
'Kohlu' => 'Kohlu',
'Korak' => 'Korak',
'Korangi' => 'Korangi',
'Kot Sarae' => 'Kot Sarae',
'Kotli' => 'Kotli',
'Lahore' => 'Lahore',
'Larkana' => 'Larkana',
'Lahri' => 'Lahri',
'Lakki Marwat' => 'Lakki Marwat',
'Lasbela' => 'Lasbela',
'Latamber' => 'Latamber',
'Layyah' => 'Layyah',
'Leiah' => 'Leiah',
'Liari' => 'Liari',
'Lodhran' => 'Lodhran',
'Loralai' => 'Loralai',
'Lower Dir' => 'Lower Dir',
'Shadan Lund' => 'Shadan Lund',
'Multan' => 'Multan',
'Mandi Bahauddin' => 'Mandi Bahauddin',
'Mansehra' => 'Mansehra',
'Mian Chanu' => 'Mian Chanu',
'Mirpur' => 'Mirpur',
'Moro' => 'Moro',
'Mardan' => 'Mardan',
'Mach' => 'Mach',
'Madyan' => 'Madyan',
'Malakand' => 'Malakand',
'Mand' => 'Mand',
'Manguchar' => 'Manguchar',
'Manguchar' => 'Mashki Chah',
'Maslti' => 'Maslti',
'Mastuj' => 'Mastuj',
'Mastung' => 'Mastung',
'Mathi' => 'Mathi',
'Matiari' => 'Matiari',
'Mehar' => 'Mehar',
'Mekhtar' => 'Mekhtar',
'Merui' => 'Merui',
'Mianwali' => 'Mianwali',
'Mianez' => 'Mianez',
'Mirpur Batoro' => 'Mirpur Batoro',
'Mirpur Khas' => 'Mirpur Khas',
'Mirpur Sakro' => 'Mirpur Sakro',
'Mithi' => 'Mithi',
'Mongora' => 'Mongora',
'Murgha Kibzai' => 'Murgha Kibzai',
'Muridke' => 'Muridke',
'Musa Khel Bazar' => 'Musa Khel Bazar',
'Muzaffar Garh' => 'Muzaffar Garh',
'Muzaffarabad' => 'Muzaffarabad',
'Nawabshah' => 'Nawabshah',
'Nazimabad' => 'Nazimabad',
'Nowshera' => 'Nowshera',
'Nagar Parkar' => 'Nagar Parkar',
'Nagha Kalat' => 'Nagha Kalat',
'Nal' => 'Nal',
'Naokot' => 'Naokot',
'Nasirabad' => 'Nasirabad',
'Nauroz Kalat' => 'Nauroz Kalat',
'Naushara' => 'Naushara',
'Nur Gamma' => 'Nur Gamma',
'Nushki' => 'Nushki',
'Nuttal' => 'Nuttal',
'Okara' => 'Okara',
'Ormara' => 'Ormara',
'Peshawar' => 'Peshawar',
'Panjgur' => 'Panjgur',
'Pasni City' => 'Pasni City',
'Paharpur' => 'Paharpur',
'Palantuk' => 'Palantuk',
'Pendoo' => 'Pendoo',
'Piharak' => 'Piharak',
'Pirmahal' =>'Pirmahal',
'Pishin' => 'Pishin',
'Plandri' => 'Plandri',
'Pokran' => 'Pokran',
'Pounch' => 'Pounch',
'Quetta' => 'Quetta',
'Qambar' => 'Qambar',
'Qamruddin Karez' => 'Qamruddin Karez',
'Qazi Ahmad' => 'Qazi Ahmad',
'Qila Abdullah' => 'Qila Abdullah',
'Qila Ladgasht' => 'Qila Ladgasht',
'Qila Safed' => 'Qila Safed',
'Qila Saifullah' => 'Qila Saifullah',
'Rawalpindi' => 'Rawalpindi',
'Rabwah' => 'Rabwah',
'Rahim Yar Khan' => 'Rahim Yar Khan',
'Rajan Pur' => 'Rajan Pur',
'Rakhni' => 'Rakhni',
'Ranipur' => 'Ranipur',
'Ratodero' => 'Ratodero',
'Rawalakot' => 'Rawalakot',
'Renala Khurd' => 'Renala Khurd',
'Robat Thana' => 'Robat Thana',
'Rodkhan' => 'Rodkhan',
'Rohri' => 'Rohri',
'Sialkot' => 'Sialkot',
'Sadiqabad' => 'Sadiqabad',
'Safdar Abad- (Dhaban Singh)' => 'Safdar Abad- (Dhaban Singh)',
'Sahiwal' => 'Sahiwal',
'Saidu Sharif' => 'Saidu Sharif',
'Saindak' => 'Saindak',
'Sakrand' => 'Sakrand',
'Sanjawi' => 'Sanjawi',
'Sargodha' => 'Sargodha',
'Saruna' => 'Saruna',
'Shabaz Kalat' => 'Shabaz Kalat',
'Shadadkhot' => 'Shadadkhot',
'Shahbandar' => 'Shahbandar',
'Shahpur' => 'Shahpur',
'Shahpur Chakar' => 'Shahpur Chakar',
'Shakargarh' => 'Shakargarh',
'Shangla' => 'Shangla',
'Sharam Jogizai' => 'Sharam Jogizai',
'Sheikhupura' => 'Sheikhupura',
'Shikarpur' => 'Shikarpur',
'Shingar' => 'Shingar',
'Shorap' => 'Shorap',
'Sibi' => 'Sibi',
'Sohawa' => 'Sohawa',
'Sonmiani' => 'Sonmiani',
'Sooianwala' => 'Sooianwala',
'Spezand' => 'Spezand',
'Spintangi' => 'Spintangi',
'Sui' => 'Sui',
'Sujawal' => 'Sujawal',
'Sukkur' => 'Sukkur',
'Suntsar' => 'Suntsar',
'Surab' => 'Surab',
'Swabi' => 'Swabi',
'Swat' => 'Swat',
'Tando Adam' => 'Tando Adam',
'Tando Bago' => 'Tando Bago',
'Tangi' => 'Tangi',
'Tank City' => 'Tank City',
'Tar Ahamd Rind' => 'Tar Ahamd Rind',
'Thalo' => 'Thalo',
'Thatta' => 'Thatta',
'Toba Tek Singh' => 'Toba Tek Singh',
'Tordher' => 'Tordher',
'Tujal' => 'Tujal',
'Tump' => 'Tump',
'Turbat' => 'Turbat',
'Umarao' => 'Umarao',
'Umarkot' => 'Umarkot',
'Upper Dir' => 'Upper Dir',
'Uthal' => 'Uthal',
'Vehari' => 'Vehari',
'Veirwaro' => 'Veirwaro',
'Vitakri' => 'Vitakri',
'Wadh' => 'Wadh',
'Wah Cantt' => 'Wah Cantt',
'Warah' => 'Warah',
'Washap' => 'Washap',
'Wasjuk' => 'Wasjuk',
'Wazirabad' => 'Wazirabad',
'Yakmach' => 'Yakmach',
'Zhob' => 'Zhob',
'Other' => 'Other'
),
'input_class' => array(
'wc-enhanced-select',
)
), $fields['shipping']['shipping_city'] );
$fields['shipping']['shipping_city'] = $city_args;
$fields['billing']['billing_city'] = $city_args; // Also change for billing field
wc_enqueue_js( "
jQuery( ':input.wc-enhanced-select' ).filter( ':not(.enhanced)' ).each( function() {
var select2_args = { minimumResultsForSearch: 5 };
jQuery( this ).select2( select2_args ).addClass( 'enhanced' );
});" );
return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'jeroen_sormani_change_city_to_dropdown' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment