How to Change WooCommerce default Country Dropdown Field

WooCommerce is one of the most popular e-commerce platforms for WordPress, providing robust features for managing online stores. While its default settings work for most businesses, there are times when customizing specific fields, like the country dropdown, becomes necessary.

In this article, we’ll explore how to replace WooCommerce’s default country field options with a custom selection tailored to your business needs.

Why Customize the Country Dropdown?

By default, WooCommerce includes a comprehensive list of countries in its billing and shipping fields. While this is useful for global businesses, it can be overwhelming for stores that cater to specific regions. Customizing the country dropdown can:

  • Enhance user experience by simplifying choices.
  • Improve accuracy in billing and shipping information.
  • Focus operations on regions you serve.

Let’s dive into how to achieve this using custom code.

Prerequisites

Before we proceed, ensure you have:

  • Basic knowledge of PHP and WordPress filters.
  • Access to your theme’s functions.php file (or a custom plugin).
  • A staging environment to test changes safely.

Step-by-Step Guide to Change WooCommerce default Country Dropdown Field

Here’s how to override the default WooCommerce country fields with custom options.

1. Add the Custom Code

Copy and paste the following code into your theme’s functions.php file or a custom plugin:

// Change option value of country fields
function custom_override_country_dropdown($fields) {
    // Static country options
    $country_options = array(
        '' => __('Select a country...', 'woocommerce'),
        'US' => __('United States', 'woocommerce'),
        'CA' => __('Canada', 'woocommerce'),
        'GB' => __('United Kingdom', 'woocommerce'),
        'AU' => __('Australia', 'woocommerce'),
        'IN' => __('India', 'woocommerce')
    );

    // Override both billing and shipping country fields
    if (isset($fields['billing_country'])) {
        $fields['billing_country'] = array(
            'type'        => 'select',
            'label'       => __('Country/Region', 'woocommerce'),
            'required'    => true,
            'options'     => $country_options,
        );
    }

    if (isset($fields['shipping_country'])) {
        $fields['shipping_country'] = array(
            'type'        => 'select',
            'label'       => __('Country/Region', 'woocommerce'),
            'required'    => true,
            'options'     => $country_options,
        );
    }

    return $fields;
}

// Apply to billing fields
add_filter('woocommerce_billing_fields', 'custom_override_country_dropdown', 10, 1);

// Apply to shipping fields
add_filter('woocommerce_shipping_fields', 'custom_override_country_dropdown', 10, 1);

// Apply to account editing fields (My Account -> Edit Address)
add_filter('woocommerce_default_address_fields', 'custom_override_country_dropdown', 10, 1);

2. Understand the Code

  • $country_options: This array defines the available countries. You can modify it to include any countries relevant to your business.
  • woocommerce_billing_fields and woocommerce_shipping_fields: These filters customize the fields displayed on the billing and shipping forms.
  • woocommerce_default_address_fields: This filter ensures the customization is applied to the account page where customers edit their addresses.

How to Change the Country Field in the WooCommerce Checkout Page

Note: If you want to change the country field only on the checkout page, you don’t need to use the code above.

The country field in the WooCommerce checkout page is essential for capturing the customer’s location. However, you might want to customize it to improve user experience, tailor it to specific needs, or enforce business rules. Here’s how you can achieve this:

Steps to Change the Country Field:

Modify the Default Country List:

  • WooCommerce uses the country list defined in its settings. You can filter or modify this list using the woocommerce_countries filter in your theme’s functions.php file.
// Change option value of country fields
function custom_override_country_dropdown($fields) {
    // Static country options
    $country_options = array(
        '' => __('Select a country...', 'woocommerce'),
        'US' => __('United States', 'woocommerce'),
        'CA' => __('Canada', 'woocommerce'),
        'GB' => __('United Kingdom', 'woocommerce'),
        'AU' => __('Australia', 'woocommerce'),
        'IN' => __('India', 'woocommerce')
    );

    // Override both billing and shipping country fields
    if (isset($fields['billing_country'])) {
        $fields['billing_country'] = array(
            'type'        => 'select',
            'label'       => __('Country/Region', 'woocommerce'),
            'required'    => true,
            'options'     => $country_options,
        );
    }

    if (isset($fields['shipping_country'])) {
        $fields['shipping_country'] = array(
            'type'        => 'select',
            'label'       => __('Country/Region', 'woocommerce'),
            'required'    => true,
            'options'     => $country_options,
        );
    }

    return $fields;
}

// Apply to billing fields
add_filter('woocommerce_billing_fields', 'custom_override_country_dropdown', 10, 1);

// Apply to shipping fields
add_filter('woocommerce_shipping_fields', 'custom_override_country_dropdown', 10, 1);

This code will replace the country field options on the checkout page. After adding the above code to your active theme’s functions file, the checkout page’s country field will be replaced with the new countries added in the function. This code will apply to both the billing address and the shipping address.

// This is the default WooCommerce filter hook used to customize billing address fields in WooCommerce.
add_filter('woocommerce_billing_fields', 'custom_override_country_dropdown', 10, 1);
// This is the default WooCommerce filter hook used to customize shipping address fields in WooCommerce.
add_filter('woocommerce_shipping_fields', 'custom_override_country_dropdown', 10, 1);

Benefits of Customizing WooCommerce Country Fields

This customization provides several advantages:

  1. Improved Usability: Simplifies the user experience by displaying only relevant countries.
  2. Operational Focus: Helps businesses streamline their operations to specific regions.
  3. Reduced Errors: Minimizes the chance of customers selecting unsupported countries.

Important Note

  • Use a Child Theme: Always apply customizations in a child theme to prevent losing changes during theme updates.
  • Backup Your Site: Before making any changes, ensure you have a backup of your website.
  • Test in Staging: Validate your changes in a staging environment before applying them to the live site.

Conclusion

Customizing WooCommerce’s country dropdown fields is a simple yet effective way to enhance your store’s usability and align it with your business goals. With the provided code snippet and explanation, you can easily tailor the country fields to suit your needs.

If you found this guide helpful or have any questions, feel free to leave a comment below. Stay tuned for more WooCommerce customization tips!

Leave a Comment