skip to Main Content

In woocommerce already the shipping country in restricted to IN
On checkout the default value of Country, state & city is set
I want to do that same in my-account/edit-address/ only in shipping address
tried using this code but its not working

add_filter( 'woocommerce_shipping_fields' , 'default_shipping_address' );
 
function default_shipping_address( $fields ) {
    $fields['shipping_city']['default'] = 'Mumbai';
    $fields['shipping_state']['default'] = 'Maharashtra';
    return $fields;
 
}

this is not working let me know what’s wrong or is there any other way to do this?

enter image description here

2

Answers


  1. You can use the address hook.

       add_filter( 'woocommerce_default_address_fields' , 'default_shipping_address' );
    function default_shipping_address( $fields ) {
        $fields['shipping_city']['value'] = 'Mumbai';
        $fields['shipping_state']['value'] = 'Maharashtra';
        return $fields;
    }
    
    Login or Signup to reply.
  2. You are pretty near… As Shipping State value in WooCommerce is a state code, you need to replace ‘Maharashtra’ with ‘MH’ (For India) as follows:

    add_filter( 'woocommerce_shipping_fields' , 'set_default_my_account_shipping_city_state_values' );
    function set_default_my_account_shipping_city_state_values( $fields ) {
        // Targeting My account section
        if( is_account_page() ) {
            $fields['shipping_city']['default'] = 'Mumbai';
            $fields['shipping_state']['default'] = 'MH'; // <== HERE
        }
    
        return $fields;
    }
    

    Code goes in functions.php file of the active child theme (or active theme). Tested and works.


    Alternative: If it really doesn’t work for you, you can try to use the following:

    add_action( 'template_redirect' , 'set_default_shipping_city_and_state_values' );
    function set_default_shipping_city_and_state_values( $fields ) {
        if( is_wc_endpoint_url( 'edit-address' ) ) {
            if ( WC()->customer->get_shipping_city() === '' ) {
                WC()->customer->Set_shipping_city('Mumbai');
            }
            
            if ( WC()->customer->get_shipping_state() === '' ) {
                WC()->customer->Set_shipping_state('MH');
            }
        }
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search