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.
// 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_itemsfilters the array of menu items. The loop removes the first item and stops withbreak. 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_redirectcallback 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.
Related articles
- adding name and confirm password fields to WooCommerce registration: another My account customization
