How can I create an additional field for the house number?

Sometimes it is helpful if there is an extra field for the house number (the alternative is to check within the address field whether there is a number).

There are two variants for an extra field:
1.) If the address field 2 is not used, you can activate it under Customize > WooCommerce > Checkout > Address 2 Field and change it to the house number field.

add_filter( 'woocommerce_default_address_fields' , 'change_rename_address_placeholders_checkout', 9999 );
 
function change_rename_address_placeholders_checkout( $address_fields ) {
   $address_fields['address_1']['placeholder'] = 'Street Name';
   $address_fields['address_2']['placeholder'] = 'House Number';
   return $address_fields;
}

2.) If address field 2 is already in use, the following solution will help.

add_filter( 'woocommerce_checkout_fields' , 'change_add_field_and_reorder_fields' );
   
function change_add_field_and_reorder_fields( $fields ) {
   
    // Add New Fields
        
    $fields['billing']['billing_houseno'] = array(
    'label'     => 'House Number',
    'placeholder'   => 'House Number',
    'priority' => 51,
    'required'  => true,
    'clear'     => true
     );
   
    $fields['shipping']['shipping_houseno'] = array(
    'label'     => 'House Number',
    'placeholder'   => 'House Number',
    'priority' => 51,
    'required'  => true,
    'clear'     => true
     );     
      
    return $fields;
}
  
// ------------------------------------
// Add Billing House # to Address Fields
  
add_filter( 'woocommerce_order_formatted_billing_address' , 'change_default_billing_address_fields', 10, 2 );
  
function change_default_billing_address_fields( $fields, $order ) {
    $fields['billing_houseno'] = get_post_meta( $order->get_id(), '_billing_houseno', true );
    return $fields;
}
  
// ------------------------------------
// Add Shipping House # to Address Fields
  
add_filter( 'woocommerce_order_formatted_shipping_address' , 'change_default_shipping_address_fields', 10, 2 );
  
function change_default_shipping_address_fields( $fields, $order ) {
    $fields['shipping_houseno'] = get_post_meta( $order->get_id(), '_shipping_houseno', true );
    return $fields;
}
  
// ------------------------------------
// Create 'replacements' for new Address Fields
  
add_filter( 'woocommerce_formatted_address_replacements', 'add_new_replacement_fields',10,2 );
  
function add_new_replacement_fields( $replacements, $address ) {
    $replacements['{billing_houseno}'] = isset($address['billing_houseno']) ? $address['billing_houseno'] : '';
    $replacements['{shipping_houseno}'] = isset($address['shipping_houseno']) ? $address['shipping_houseno'] : '';
    return $replacements;
}
  
// ------------------------------------
// Show Shipping & Billing House # for different countries
  
add_filter( 'woocommerce_localisation_address_formats', 'change_new_address_formats' );
  
function change_new_address_formats( $formats ) {
    $formats['IE'] = "{name}\n{company}\n{address_1}\n{billing_houseno}\n{shipping_houseno}\n{city}\n{state}\n{postcode}\n{country}";
    $formats['UK'] = "{name}\n{company}\n{address_1}\n{billing_houseno}\n{shipping_houseno}\n{city}\n{state}\n{postcode}\n{country}";
    // and so on...
    return $formats;
}

 

Without cookies
This website does not use cookies or tracking. More information can be found in the privacy policy.