最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

plugins - How to remove admin main menu name repetition

programmeradmin1浏览0评论

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 ?

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');
}

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 ?

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 edited Jul 3, 2014 at 6:21 Dinoop asked Jul 2, 2014 at 12:07 DinoopDinoop 1113 bronze badges 1
  • 1 Please add your code to the question for easily reproducible example. – Rarst Commented Jul 2, 2014 at 12:14
Add a comment  | 

1 Answer 1

Reset to default 0

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";
发布评论

评论列表(0)

  1. 暂无评论