How to Create Additional Schemes for the Address Field

Introduction

Would you like to create additional schemes for the Address field? WPForms makes it easy to add custom address schemes using PHP. This tutorial will guide you through the process.

By default, the Address field in WPForms offers two formats: US and International. However, you can add more address layouts using a filter.

Creating additional schemes

To begin, you’ll need to add either one of the example code snippets below (or create your own) to your site. The snippets below demonstrate how you can create new schemes for other countries, such as Canada or Australia.

If you need any assistance in how to add snippets to your site, please review this tutorial.

Canada

/**
 * WPForms Add new address field scheme (Canada)
 *
 * @link   https://wpforms.com/developers/create-additional-schemes-for-the-address-field/
 */

function wpf_dev_new_address_scheme( $schemes ) {

    $schemes[ 'canada' ] = array(
        'label' => 'Canada',
        'address1_label' => 'Address Line 1',
        'address2_label' => 'Address Line 2',
        'city_label' => 'City',
        'postal_label' => 'Code Postal',
        'state_label' => 'Province',
        'states' => array(
            'BC' => 'British Columbia',
            'ON' => 'Ontario',
            'QC' => 'Quebec',
            'AB' => 'Alberta',
            'MB' => 'Manitoba',
            'NB' => 'New Brunswick',
            'NL' => 'Newfoundland and Labrador',
            'NT' => 'Northwest Territories',
            'NS' => 'Nova Scotia',
            'NU' => 'Nunavut',
            'PE' => 'Prince Edward Island',
            'SK' => 'Saskatchewan',
            'YT' => 'Yukon',
            ),
    );

    return $schemes;

}

add_filter( 'wpforms_address_schemes', 'wpf_dev_new_address_scheme', 10, 1);

Australia

/**
 * WPForms Add new address field scheme (Australia)
 *
 * @link   https://wpforms.com/developers/create-additional-schemes-for-the-address-field/
 */

function wpf_dev_new_address_scheme( $schemes ) {

	$schemes[ 'australia' ] = array(
            'label'          => 'Australia',
            'address1_label' => 'Address Line 1',
            'address2_label' => 'Address Line 2',
            'city_label'     => 'City',
            'postal_label'   => 'Postal',
            'state_label'    => 'State / Territory',
            'states'         => array(
                'NSW' => 'New South Wales',
                'VIC' => 'Victoria',
                'QLD' => 'Queensland',
                'WA'  => 'Western Australia',
                'SA'  => 'South Australia',
		'TAS' => 'Tasmania',
		'ACT' => 'Australia Capital Territory',
		'NT'  => 'Northern Territory',
        ),
    );

    return $schemes;

}

add_filter( 'wpforms_address_schemes', 'wpf_dev_new_address_scheme', 10, 1 );

Using the new Address scheme

Once the snippet is added, you can create a new form and add an Address field to the form.

Once you’ve added the Address form field, you’ll be able to select your new address scheme from the Scheme dropdown.

you can now select the additional schemes for the address field from the Schemes dropdown on the Address form field.

With either (or both) of the snippets above, you’ve now added new additional address schemes. Would you like to learn how to sublabels on the address field? Try out our article on How to Change the Address Field Sublabels.

Reference Filter

wpforms_address_schemes

FAQ

Q: Can I create a custom address scheme and list all the countries?

A: Absolutely! To create your own unique address scheme and list all the countries, you’d use the following code snippet. You would just customize this to your needs.

/**
 * WPForms Add new address field scheme (Custom)
 *
 * @link https://wpforms.com/developers/create-additional-schemes-for-the-address-field/
 */

function wpf_new_address_scheme( $schemes ) {

	$schemes[ 'custom' ] = array(
            'label'          => 'Custom',
	    'address1_label' => 'Address Line 1',
	    'address2_label' => 'Address Line 2',
	    'city_label'     => 'City',
	    'postal_label'   => 'Postal Code',
	    'state_label'    => 'State / Province / Region',
	    'states'		 => '',
	    'countries'      => array(
		'AF' => 'Afghanistan',
		'AX' => 'Aland 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',
		'AC' => 'Ascension Island',
		'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',
		'BV' => 'Bouvet Island',
		'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',
		'IC' => 'Canary Islands',
		'CV' => 'Cape Verde',
		'BQ' => 'Caribbean Netherlands',
		'KY' => 'Cayman Islands',
		'CF' => 'Central African Republic',
		'EA' => 'Ceuta and Melilla',
		'TD' => 'Chad',
		'CL' => 'Chile',
		'CN' => 'China',
		'CX' => 'Christmas Island',
		'CP' => 'Clipperton Island',
		'CC' => 'Cocos (Keeling) Islands',
		'CO' => 'Colombia',
		'KM' => 'Comoros',
		'CD' => 'Congo (DRC)',
		'CG' => 'Congo (Republic)',
		'CK' => 'Cook Islands',
		'CR' => 'Costa Rica',
		'CI' => 'Côte d’Ivoire',
		'HR' => 'Croatia',
		'CU' => 'Cuba',
		'CW' => 'Curaçao',
		'CY' => 'Cyprus',
		'CZ' => 'Czech Republic',
		'DK' => 'Denmark (Danmark)',
		'DG' => 'Diego Garcia',
		'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',
		'HM' => 'Heard & McDonald Islands',
		'HN' => 'Honduras',
		'HK' => 'Hong Kong',
		'HU' => 'Hungary',
		'IS' => 'Iceland',
		'IN' => 'India',
		'ID' => 'Indonesia',
		'IR' => 'Iran',
		'IQ' => 'Iraq',
		'IE' => 'Ireland',
		'IM' => 'Isle of Man',
		'IL' => 'Israel',
		'IT' => 'Italy',
		'JM' => 'Jamaica',
		'JP' => 'Japan',
		'JE' => 'Jersey',
		'JO' => 'Jordan',
		'KZ' => 'Kazakhstan',
		'KE' => 'Kenya',
		'KI' => 'Kiribati',
		'XK' => 'Kosovo',
		'KW' => 'Kuwait',
		'KG' => 'Kyrgyzstan',
		'LA' => 'Laos',
		'LV' => 'Latvia',
		'LB' => 'Lebanon',
		'LS' => 'Lesotho',
		'LR' => 'Liberia',
		'LY' => 'Libya',
		'LI' => 'Liechtenstein',
		'LT' => 'Lithuania',
		'LU' => 'Luxembourg',
		'MO' => 'Macau',
		'MK' => 'Macedonia (FYROM)',
		'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',
		'NC' => 'New Caledonia',
		'NZ' => 'New Zealand',
		'NI' => 'Nicaragua',
		'NE' => 'Niger',
		'NG' => 'Nigeria',
		'NU' => 'Niue',
		'NF' => 'Norfolk Island',
		'MP' => 'Northern Mariana Islands',
		'KP' => 'North Korea',
		'NO' => 'Norway',
		'OM' => 'Oman',
		'PK' => 'Pakistan',
		'PW' => 'Palau',
		'PS' => 'Palestine',
		'PA' => 'Panama',
		'PG' => 'Papua New Guinea',
		'PY' => 'Paraguay',
		'PE' => 'Peru',
		'PH' => 'Philippines',
		'PN' => 'Pitcairn Islands',
		'PL' => 'Poland',
		'PT' => 'Portugal',
		'PR' => 'Puerto Rico',
		'QA' => 'Qatar',
		'RE' => 'Réunion',
		'RO' => 'Romania',
		'RU' => 'Russia',
		'RW' => 'Rwanda',
		'BL' => 'Saint Barthélemy',
		'SH' => 'Saint Helena',
		'KN' => 'Saint Kitts and Nevis',
		'LC' => 'Saint Lucia',
		'MF' => 'Saint Martin',
		'PM' => 'Saint Pierre and Miquelon',
		'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',
		'SX' => 'Sint Maarten',
		'SK' => 'Slovakia',
		'SI' => 'Slovenia',
		'SB' => 'Solomon Islands',
		'SO' => 'Somalia',
		'ZA' => 'South Africa',
		'GS' => 'South Georgia & South Sandwich Islands',
		'KR' => 'South Korea',
		'SS' => 'South Sudan',
		'ES' => 'Spain',
		'LK' => 'Sri Lanka',
		'VC' => 'St. Vincent & Grenadines',
		'SD' => 'Sudan',
		'SR' => 'Suriname',
		'SJ' => 'Svalbard and Jan Mayen',
		'SZ' => 'Swaziland',
		'SE' => 'Sweden',
		'CH' => 'Switzerland',
		'SY' => 'Syria',
		'TW' => 'Taiwan, Province of China',
		'TJ' => 'Tajikistan',
		'TZ' => 'Tanzania',
		'TH' => 'Thailand',
		'TL' => 'Timor-Leste',
		'TG' => 'Togo',
		'TK' => 'Tokelau',
		'TO' => 'Tonga',
		'TT' => 'Trinidad and Tobago',
		'TA' => 'Tristan da Cunha',
		'TN' => 'Tunisia',
		'TR' => 'Turkey',
		'TM' => 'Turkmenistan',
		'TC' => 'Turks and Caicos Islands',
		'TV' => 'Tuvalu',
		'UM' => 'U.S. Outlying Islands',
		'VI' => 'U.S. Virgin Islands',
		'UG' => 'Uganda',
		'UA' => 'Ukraine',
		'AE' => 'United Arab Emirates',
		'GB' => 'United Kingdom',
		'US' => 'United States of America',
		'UY' => 'Uruguay',
		'UZ' => 'Uzbekistan',
		'VU' => 'Vanuatu',
		'VA' => 'Vatican City',
		'VE' => 'Venezuela',
		'VN' => 'Vietnam',
		'WF' => 'Wallis and Futuna',
		'EH' => 'Western Sahara',
		'YE' => 'Yemen',
		'ZM' => 'Zambia',
		'ZW' => 'Zimbabwe',
		),
	);

	return $schemes;

}

add_filter( 'wpforms_address_schemes', 'wpf_new_address_scheme', 10, 1 );

Q: How can I hide the fields in International or US that I don’t need?

A: There are certain fields that you can hide from within the builder for either of these default Address schemes. Simply add the Address field, click on the Advanced tab and you’ll be able toggle the switch to hide.

For the International Scheme, you can hide the Address Line 2, Zip / Postal, and the Country.

toggle the switch to hide certain fields in the International Address Scheme that you do not wish to display

For the US scheme, you can hide the Address Line 2, and Zip / Postal within the form builder.

If the Address field is a required field, we do not recommend hiding any fields with CSS as the address field would fail validation.

But if you want to hide other fields that don’t have a toggle inside the form builder, you can use CSS to hide these. Fields such as State/Province/Region, you would use this CSS to hide for a specific form.

input#wpforms-41-field_6-state, label[for="wpforms-41-field_6-state"] {
    visibility: hidden;
}

The example snippet shows that we’re hiding the State field and label for the form ID 41 and the field ID (for the Address field) 6. You’ll need to update these IDs to match your own IDs. If you need any help in where to find these IDs, please take a look at this handy guide.

If you need any help in how to add custom CSS to your site, please take a look at this tutorial.