Skip to main content
Unwan replaces WooCommerce’s plain Addresses item in My Account with Address book — one endpoint, no billing/shipping tabs to choose between.

Layout

1

Two default summary cards

“Bills to” and “Ships to” cards show the current billing and shipping defaults (or an empty state with an Add action if a role has no default yet), each with a Change link straight into the editor.
2

One combined list

Every entry in the customer’s address book — both defaults and every additional address — in a single list, defaults first, then most-recently-updated. Each row shows the street line, recipient name, location, and phone (if set), plus badges for any default role it holds.
3

Search, once it's worth it

A filter input appears automatically once the saved-address count passes the configured threshold — the same control and threshold used at checkout.

Row actions

Each address has a keyboard-accessible three-dot action menu: These aren’t just UI-level restrictions: the same rules are enforced server-side, so a disabled action can’t be triggered by a crafted request either.

Adding and editing

The listing and editor views are mutually exclusive — opening the editor (via Add new address or any row’s Edit action) replaces the list entirely with just the form and a Back to addresses link, rather than showing both at once. The editor form is WooCommerce’s own locale-aware address field set (via WC()->countries->get_address_fields()), plus two checkboxes: Default shipping address and Default billing address. Leaving both unchecked keeps the entry as a plain, role-free additional address available everywhere at checkout.
If a save fails validation (a required field is empty, or the phone number doesn’t look valid), Unwan redirects back to the same editor with the customer’s entered values intact — nothing is lost, and nothing needs to be retyped from scratch.

Security

Every action — save, delete, make default — is a POST request, protected by a dedicated nonce (check_admin_referer() per action), scoped to the currently signed-in customer’s own address book, validated, and sanitized before anything is written. There is no code path that lets one customer read or modify another customer’s addresses.