php – remove_submenu_page('woocommerce', 'wc-admin'); function not removing dashboard-ThrowExceptions

Exception or error:

I have created a new role in WordPress for WooCommerce. The only thing I require this role to see is:

  • WooCommerce –> Orders Only
  • Users – All Submenus
  • WP All Import – All Submenus except for Settings
  • WP All Export – All Submenus except for Settings

I successfully dwindled down to the list but am having issues isolating the WooCommerce Dashboard sub-menu.

I used this code to get a full list:

    if (!function_exists('debug_admin_menus')):
function debug_admin_menus() {
if ( !is_admin())
    global $submenu, $menu, $pagenow;
    if ( current_user_can('manage_options') ) { // ONLY DO THIS FOR ADMIN
        if( $pagenow == 'index.php' ) {  // PRINTS ON DASHBOARD
            echo '<pre>'; print_r( $menu ); echo '</pre>'; // TOP LEVEL MENUS
            echo '<pre>'; print_r( $submenu ); echo '</pre>'; // SUBMENUS
add_action( 'admin_notices', 'debug_admin_menus' );

I found that component being: wc-admin where I added:

remove_submenu_page('woocommerce', 'wc-admin');

BUT it isn’t removing it. Does anyone know why? I’ve also tried:

add_action( 'admin_menu', 'remove_menu_pages', 999);
function remove_menu_pages() {
  global $current_user;

  $user_roles = $current_user->roles;
  $user_role = array_shift($user_roles);
  if($user_role == "custom_shop_admin") {
    $remove_submenu = remove_submenu_page('woocommerce', 'wc-admin');

Everywhere I’ve looked up has (‘woocommerce’, ‘wc-admin’) as the dashboard. Not sure if I can’t remove it, to redirect it to the orders page perhaps for that role only. I know there has been a recent WooCommerce Update so not sure if that has anything to do with it.

Thank you!

How to solve:

Leave a Reply

Your email address will not be published. Required fields are marked *