Woocommerce rearrange checkout fields

Solution:

You can try below code for reorder the checkout page fields. You can chnage the order of fields in the array.

// for billing fields

add_filter("woocommerce_checkout_fields", "new_order_fields");

function new_order_fields($fields) {

    $order = array(
        "billing_company", 
        "billing_first_name", 
        "billing_last_name", 
        "billing_address_1", 
        "billing_address_2", 
        "billing_postcode", 
        "billing_country", 
        "billing_email", 
        "billing_phone"
    );
    foreach( $order as $field ) {
        $ordered_fields[$field] = $fields["billing"][$field];
    }

    $fields["billing"] = $ordered_fields;
    return $fields;    
}

// for shipping fields
add_filter("woocommerce_checkout_fields", "new_shiping_order_fields");

function new_shiping_order_fields($fields) {

    $order = array(   
        "shipping_city", 
        "shipping_postcode", 
        "shipping_country",    
        "shipping_first_name", 
        "shipping_last_name", 
        "shipping_company", 
        "shipping_address_1", 
        "shipping_address_2"

    );
    foreach( $order as $field ) {
        $ordered_fields[$field] = $fields["shipping"][$field];
    }

    $fields["shipping"] = $ordered_fields;
    return $fields;
}