I would like to remove the form field billing_adress_2 within the template form-edit-addresses.php.
To finish is it possible to reorder the form fields likes this:
first_name - last_name
email - phone
company
address_1
postcode
city
state
This change I would like to apply it only on the page (templates) form-edit-addresses.php
Any help is appreciated
In My account > Adresses section, the below hooked functions will:
- remove "Address 2" billing and shipping fields
- reorder billing and shipping address fields
- reorder billing Email and phone fields (after first and last names)
- remove "Address 2" from display
You forgot the "country" field that you can reorder easily in the $sorted_fields array…
The code:
// Account Edit Adresses: Remove and reorder addresses fields
add_filter( 'woocommerce_default_address_fields', 'custom_default_address_fields', 20, 1 );
function custom_default_address_fields( $fields ) {
// Only on account pages
if( ! is_account_page() ) return $fields;
## ---- 1. Remove 'address_2' field ---- ##
unset($fields['address_2']);
## ---- 2. Sort Address fields ---- ##
// Set the order (sorting fields) in the array below
$sorted_fields = array('first_name','last_name','company','address_1','country','postcode','city','state');
$new_fields = array();
$priority = 0;
// Reordering billing and shipping fields
foreach($sorted_fields as $key_field){
$priority += 10;
if( $key_field == 'company' )
$priority += 20; // keep space for email and phone fields
$new_fields[$key_field] = $fields[$key_field];
$new_fields[$key_field]['priority'] = $priority;
}
return $new_fields;
}
// Account Edit Adresses: Reorder billing email and phone fields
add_filter( 'woocommerce_billing_fields', 'custom_billing_fields', 20, 1 );
function custom_billing_fields( $fields ) {
// Only on account pages
if( ! is_account_page() ) return $fields;
## ---- 2. Sort billing email and phone fields ---- ##
$fields['billing_email']['priority'] = 30;
$fields['billing_email']['class'] = array('form-row-first');
$fields['billing_phone']['priority'] = 40;
$fields['billing_phone']['class'] = array('form-row-last');
return $fields;
}
// Account Displayed Addresses : Remove 'address_2'
add_filter( 'woocommerce_my_account_my_address_formatted_address' , 'my_account_address_formatted_addresses', 20, 3 );
function my_account_address_formatted_addresses( $address, $customer_id, $address_type ) {
unset($address['address_2']); // remove Address 2
return $address;
}
Code goes in function.php file of your active child theme (or active theme). Tested and work.
If you want to make that effective in checkout page too, you will have to remove this lines:
// Only on account pages
if( ! is_account_page() ) return $fields;
In each function (2 times)…
This code will change the order of the fields in the billing address as you want them to appear. Place this code in your themes functions.php file.
add_filter('woocommerce_address_to_edit', 'reorder_woocommerce_address_fields', 10, 2);
function reorder_woocommerce_address_fields( $address, $load_address) {
$new_address['billing_first_name'] = $address['billing_first_name'];
$new_address['billing_last_name'] = $address['billing_last_name'];
$new_address['billing_email'] = $address['billing_email'];
$new_address['billing_phone'] = $address['billing_phone'];
$new_address['billing_email'] = array(
'label' => __('Email', 'woocommerce'),
'required' => true,
'class' => array('form-row-first'),
);
$new_address['billing_phone'] = array(
'label' => __('Phone', 'woocommerce'),
'required' => true,
'class' => array('form-row-last'),
'clear' => true
);
$new_address['billing_company'] = $address['billing_company'];
$new_address['billing_address_1'] = $address['billing_address_1'];
$new_address['billing_postcode'] = $address['billing_postcode'];
$new_address['billing_city'] = $address['billing_city'];
$new_address['billing_state'] = $address['billing_state'];
return $new_address;
}