Remove the Dashboard Tab From the WooCommerce My Account Menu

Quick Summary

  • Filter woocommerce_account_menu_items to unset the first menu item, Dashboard, and use template_redirect to send the dashboard view to the Orders endpoint.
  • The loop removes whichever item comes first, so unset $items by the dashboard key instead if a plugin might reorder the menu.
  • Add exit; after wp_redirect(), since the published code omits it and WordPress keeps building the dashboard page during the redirect.

On WooCommerce’s My account page, customers land on a Dashboard tab with a short welcome message and links to the other sections. If you’d rather send them straight to something useful, this snippet removes Dashboard from the account menu and redirects the dashboard view to the Orders page.

Add it to your child theme’s functions.php or a code snippets plugin.

PHP
// Remove the first menu item (the dashboard)
add_filter( 'woocommerce_account_menu_items', 'account_menu_items_callback' );
function account_menu_items_callback( $items ) {
    foreach( $items as $key => $item ) {
        unset($items[$key]);
        break;
    }
    return $items;
}

// Redirect default my account dashboard to the first my account enpoint (after dashboard)
add_action( 'template_redirect', 'template_redirect_callback' );
function template_redirect_callback() {
    if( is_account_page() && is_user_logged_in() && ! is_wc_endpoint_url() ){
        $first_myaccount_endpoint = 'orders';
        wp_redirect( wc_get_account_endpoint_url( $first_myaccount_endpoint ) );
    }
}

How it works

  • woocommerce_account_menu_items filters the array of menu items. The loop removes the first item and stops with break. By default that item is Dashboard, but if another plugin changes the menu order it could be something else; unset( $items['dashboard'] ) removes it by key instead.
  • The template_redirect callback runs for logged-in customers on the My account page when no endpoint is in the URL, which is the dashboard view. Logged-out visitors still see the login form. The same hook can also skip WooCommerce’s logout confirmation.
  • wc_get_account_endpoint_url() builds the URL for the endpoint in $first_myaccount_endpoint. Change 'orders' to another endpoint, such as 'edit-account' or 'edit-address', to send customers there instead.

One thing to add: there is no exit; after wp_redirect(), so WordPress keeps building the dashboard page even though the browser is being redirected. Putting exit; on the line after the redirect is the standard practice.

If your My Account area needs its own layout and menu, see my WooCommerce development services.

Share on X (opens in a new tab) Share on LinkedIn (opens in a new tab) Share on Facebook (opens in a new tab)

ChatGPT (opens in a new tab) Claude (opens in a new tab) Gemini (opens in a new tab) Perplexity (opens in a new tab) Grok (opens in a new tab)

More Insights

See More