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;
}