Add/Modify States for WooCommerce Checkout Form

If you want to modify the default states list that was populated when you select the billing and shipping country field in WooCommerce checkout form, then you can get some ideas from this tutorial.

For example, you want to restrict certain states for shipping products in United States: Alabama, Kentucky and Tennessee.

To customize the list, you need to follow the steps below:

Step 1: Open functions.php file in your theme folder and add below code:

add_filter( 'woocommerce_states', 'custom_woocommerce_states' );

function custom_woocommerce_states( $states ) {
  $states['US'] = array(
    'AL' => 'Alabama',
    'KY' => 'Kentucky',
    'TN' => 'Tennessee'
  );

  return $states;
}


Step 2: Save the file and refresh the checkout page. That’s it.

To see more default country and state code, please refer to this file – “wp-content\plugins\woocommerce\classes\class-wc-countries.php” at your project folder.

Stay tuned!

Reference for Country Code:

'AF' => Afghanistan
'AX' => Åland Islands
'AL' => Albania
'DZ' => Algeria
'AS' => American Samoa
'AD' => Andorra
'AO' => Angola
'AI' => Anguilla
'AQ' => Antarctica
'AG' => Antigua and Barbuda
'AR' => Argentina
'AM' => Armenia
'AW' => Aruba
'AU' => Australia
'AT' => Austria
'AZ' => Azerbaijan
'BS' => Bahamas
'BH' => Bahrain
'BD' => Bangladesh
'BB' => Barbados
'BY' => Belarus
'BE' => Belgium
'BZ' => Belize
'BJ' => Benin
'BM' => Bermuda
'BT' => Bhutan
'BO' => Bolivia
'BA' => Bosnia and Herzegovina
'BW' => Botswana
'BR' => Brazil
'IO' => British Indian Ocean Territory
'VG' => British Virgin Islands
'BN' => Brunei
'BG' => Bulgaria
'BF' => Burkina Faso
'BI' => Burundi
'KH' => Cambodia
'CM' => Cameroon
'CA' => Canada
'CV' => Cape Verde
'KY' => Cayman Islands
'CF' => Central African Republic
'TD' => Chad
'CL' => Chile
'CN' => China
'CX' => Christmas Island
'CC' => Cocos (Keeling) Islands
'CO' => Colombia
'KM' => Comoros
'CG' => Congo (Brazzaville)
'CD' => Congo (Kinshasa)
'CK' => Cook Islands
'CR' => Costa Rica
'HR' => Croatia
'CU' => Cuba
'CY' => Cyprus
'CZ' => Czech Republic
'DK' => Denmark
'DJ' => Djibouti
'DM' => Dominica
'DO' => Dominican Republic
'EC' => Ecuador
'EG' => Egypt
'SV' => El Salvador
'GQ' => Equatorial Guinea
'ER' => Eritrea
'EE' => Estonia
'ET' => Ethiopia
'FK' => Falkland Islands
'FO' => Faroe Islands
'FJ' => Fiji
'FI' => Finland
'FR' => France
'GF' => French Guiana
'PF' => French Polynesia
'TF' => French Southern Territories
'GA' => Gabon
'GM' => Gambia
'GE' => Georgia
'DE' => Germany
'GH' => Ghana
'GI' => Gibraltar
'GR' => Greece
'GL' => Greenland
'GD' => Grenada
'GP' => Guadeloupe
'GU' => Guam
'GT' => Guatemala
'GG' => Guernsey
'GN' => Guinea
'GW' => Guinea-Bissau
'GY' => Guyana
'HT' => Haiti
'HN' => Honduras
'HK' => Hong Kong
'HU' => Hungary
'IS' => Iceland
'IN' => India
'ID' => Indonesia
'IR' => Iran
'IQ' => Iraq
'IE' => Republic of Ireland
'IM' => Isle of Man
'IL' => Israel
'IT' => Italy
'CI' => Ivory Coast
'JM' => Jamaica
'JP' => Japan
'JE' => Jersey
'JO' => Jordan
'KZ' => Kazakhstan
'KE' => Kenya
'KI' => Kiribati
'KW' => Kuwait
'KG' => Kyrgyzstan
'LA' => Laos
'LV' => Latvia
'LB' => Lebanon
'LS' => Lesotho
'LR' => Liberia
'LY' => Libya
'LI' => Liechtenstein
'LT' => Lithuania
'LU' => Luxembourg
'MO' => Macao S.A.R., China
'MK' => Macedonia
'MG' => Madagascar
'MW' => Malawi
'MY' => Malaysia
'MV' => Maldives
'ML' => Mali
'MT' => Malta
'MH' => Marshall Islands
'MQ' => Martinique
'MR' => Mauritania
'MU' => Mauritius
'YT' => Mayotte
'MX' => Mexico
'FM' => Micronesia
'MD' => Moldova
'MC' => Monaco
'MN' => Mongolia
'ME' => Montenegro
'MS' => Montserrat
'MA' => Morocco
'MZ' => Mozambique
'MM' => Myanmar
'NA' => Namibia
'NR' => Nauru
'NP' => Nepal
'NL' => Netherlands
'AN' => Netherlands Antilles
'NC' => New Caledonia
'NZ' => New Zealand
'NI' => Nicaragua
'NE' => Niger
'NG' => Nigeria
'NU' => Niue
'NF' => Norfolk Island
'KP' => North Korea
'MP' => Northern Mariana Islands
'NO' => Norway
'OM' => Oman
'PK' => Pakistan
'PW' => Palau
'PS' => Palestinian Territory
'PA' => Panama
'PG' => Papua New Guinea
'PY' => Paraguay
'PE' => Peru
'PH' => Philippines
'PN' => Pitcairn
'PL' => Poland
'PT' => Portugal
'PR' => Puerto Rico
'QA' => Qatar
'RE' => Reunion
'RO' => Romania
'RU' => Russia
'RW' => Rwanda
'BL' => Saint Barthélemy
'SH' => Saint Helena
'KN' => Saint Kitts and Nevis
'LC' => Saint Lucia
'MF' => Saint Martin (French part)
'PM' => Saint Pierre and Miquelon
'VC' => Saint Vincent and the Grenadines
'WS' => Samoa
'SM' => San Marino
'ST' => São Tomé and Príncipe
'SA' => Saudi Arabia
'SN' => Senegal
'RS' => Serbia
'SC' => Seychelles
'SL' => Sierra Leone
'SG' => Singapore
'SK' => Slovakia
'SI' => Slovenia
'SB' => Solomon Islands
'SO' => Somalia
'ZA' => South Africa
'GS' => South Georgia/Sandwich Islands
'KR' => South Korea
'ES' => Spain
'LK' => Sri Lanka
'SD' => Sudan
'SR' => Suriname
'SJ' => Svalbard and Jan Mayen
'SZ' => Swaziland
'SE' => Sweden
'CH' => Switzerland
'SY' => Syria
'TW' => Taiwan
'TJ' => Tajikistan
'TZ' => Tanzania
'TH' => Thailand
'TL' => Timor-Leste
'TG' => Togo
'TK' => Tokelau
'TO' => Tonga
'TT' => Trinidad and Tobago
'TN' => Tunisia
'TR' => Turkey
'TM' => Turkmenistan
'TC' => Turks and Caicos Islands
'TV' => Tuvalu
'VI' => U.S. Virgin Islands
'USAF' => US Armed Forces
'UM' => US Minor Outlying Islands
'UG' => Uganda
'UA' => Ukraine
'AE' => United Arab Emirates
'GB' => United Kingdom
'US' => United States
'UY' => Uruguay
'UZ' => Uzbekistan
'VU' => Vanuatu
'VA' => Vatican
'VE' => Venezuela
'VN' => Vietnam
'WF' => Wallis and Futuna
'EH' => Western Sahara
'YE' => Yemen
'ZM' => Zambia
'ZW' => Zimbabwe

62 thoughts on “Add/Modify States for WooCommerce Checkout Form”

  1. Hi,

    My payment gateway require mandatory state filling. Unfortunately many country don’t have state option.

    How can i have a NA value (not available) to state for all country?
    Is it possible to have the value and not show on the page?

    If that’s not okay is there a way to add a state for all country or selected country?

    Many thanks

Leave a Comment

Your email address will not be published. Required fields are marked *