Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have added an admin menu using add_menu_page. When there is a sub menu with add_submenu_page,

The main menu name is repeating. How to remove this repeating menu ? wordpress admin sidebar menu

This is my code

add_action('admin_menu', 'add_my_menu');
function add_my_menu(){
    add_menu_page( 'Main Menu', 'Main Menu', 'manage_options', 'main-menu-settings', 'main_menu_settings');
    add_submenu_page( 'main-menu-settings', 'Sub Menu', 'sub menu', 'manage_options', 'sub-menu', 'sub_menu_settings');
}
share|improve this question
1  
Please add your code to the question for easily reproducible example. –  Rarst Jul 2 at 12:14
    
Thanks for the suggestion, I have added my code. –  Dinoop Jul 3 at 6:23

1 Answer 1

You can remove it from the submenu array:

function add_my_menu(){
    global $submenu;
    add_menu_page( 'Main Menu', 'Main Menu', 'manage_options', 'main-menu-settings', 'main_menu_settings');
    add_submenu_page( 'main-menu-settings', 'Sub Menu', 'sub menu', 'manage_options', 'sub-menu', 'sub_menu_settings');
    unset( $submenu['main-menu-settings'][0] );
}

The parent item is added by add_submenu_page in plugin.php as the first link if the parent doesn't already have a submenu, resulting in:

[main-menu-settings] => Array
    (
        [0] => Array
            (
                [0] => Main Menu
                [1] => manage_options
                [2] => main-menu-settings
                [3] => Main Menu
                [4] => menu-top menu-icon-generic toplevel_page_main-menu-settings
                [5] => toplevel_page_main-menu-settings
                [6] => dashicons-admin-generic
            )
        [1] => Array
            (
                [0] => sub menu
                [1] => manage_options
                [2] => sub-menu
                [3] => Sub Menu
            )
    )

being added to $submenu.

I assume that UI decision is along the lines of Don't Make Me Think. All the menu links are grouped in the same place so the user doesn't have to remember to click the parent link in the sidebar to go to the main page for that section. So the primary purpose of that parent link in the sidebar is to open the submenu.

If the user is hovering over the submenu trying to determine which page to go to, and the main page is not listed, they might not think to click on the parent link in the sidebar.

Since every other WordPress menu works that way, consider leaving it as is.

Another option is to make it more descriptive.

global $submenu;
$submenu['main-menu-settings'][0][0] = "My Plugin Main Menu";
share|improve this answer
    
Just a tip, don't use <code> tags when you add code to your posts. Add your code as normal, then highlight all of that code, and click on the {} sign just above the editor. This will place your code in a code block as in my edit. :-) –  Pieter Goosen Jul 17 at 11:41
1  
Thanks Pieter, that looks much better. –  chrisdillon Jul 17 at 15:22

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.