How to be able to edit custom address fields in WooCommerce admin?

admin2025-06-02  2

I'm Dutch and in The Netherlands we use a different address format than in the US. We'd have to spit the street name and the house number. In order to fix that I used "address line 1" for 'Street name' and added a new custom checkout field called "house number". When a user orders something everything works fine at checkout. But in the WordPress/Woocommerce admin I'm having difficulties.

When I'm viewing an order everything looks fine. That's because I have a new address format:

add_filter( 'woocommerce_localisation_address_formats', 'new_address_formats' );

function new_address_formats( $formats ) {
    $formats['NL'] = "{name}\n{company}\n{address_1} {billing_house_number} {shipping_house_number}\n{postcode} {city}\n{country}";
    return $formats;
}

But the problem comes when I click on the "edit address" icon. Address line 1 isn't called 'Street name', the House Number field isn't present at all and Address line 2 needs to be unset:

In order to be able to edit the given House Number I added a custom function in my functions.php:

function editable_order_meta_shipping( $order ){

$house_number = get_post_meta( $order->get_id(), '_shipping_house_number', true );
//unset($shipping_fields['address_2']);
?>
<div class="address">
    <p<?php if ( empty($house_number) ) echo ' class="none_set"' ?>>
        <strong>House number:</strong>
        <?php echo ( !empty( $house_number ) ) ? $house_number : 'unknown' ?>
    </p>
</div>
<div class="edit_address"><?php
    woocommerce_wp_text_input( array( 
        'id' => '_shipping_house_number',
        'label' => 'House number', 
        'wrapper_class' => 'form-field',
        'class' => '_shipping_house_number',
        'value' => $house_number
    ) ); ?>
</div>

<?php
}
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'editable_order_meta_shipping' );


function save_shipping_details( $ord_id ){
    update_post_meta( $ord_id, '_shipping_house_number', wc_clean( $_POST[ '_shipping_house_number' ] ) );
}
add_action( 'woocommerce_process_shop_order_meta', 'save_shipping_details' );

This adds a field with "House number" that's editable:

But I'm not able to find a solution to rename "Address line 1" label, to remove "Address line 2" completely and to reorder the fields so that "House number" is next to the "Address Line 1/Street Name" field.

Current situation:

What I would like to have:

Are you able to help/come up with a solution?

Thanks in advance!

转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1748807170a313882.html

最新回复(0)