如何从Add_Menu_Page中移除重复链接

时间:2012-05-20 作者:Scott B

在下面的主题管理菜单中,“MyTheme菜单标签”在侧栏菜单上复制了两次,一次用于主菜单链接,另一次用于第一个子菜单链接。

如何删除链接的第二个实例

add_menu_page(
    "MyTheme", 
    "MyTheme Menu Label", //THIS IS REPEATED TWICE IN THE MENU
    "edit_themes", 
    "functions.php", 
    \'theme_admin\', 
    get_bloginfo(\'template_directory\') .\'/img/favicon.png\',31
);

add_submenu_page(
    \'functions.php\', 
    "SEO Options",
    "SEO",
    \'edit_themes\', 
    \'my-seo-options\', 
    \'theme_admin\'
);

add_submenu_page(
    \'functions.php\', 
    "Misc Options",
    "Misc",
    \'edit_themes\', 
    \'my-misc-options\', 
    \'theme_admin\'
);

 //etc...

3 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

有一种解决方法可以隐藏此自动创建的子菜单。过去我经常使用它,但最近我又回到了原样(或者按照m0r7if3r的建议重命名它)。

还要注意的是,除了您的主要问题之外,您已经在add_menu_page, 请参见codex 供参考。

这就是它的实现方式:

/* Add top level menu */
add_menu_page(
    \'MyTheme\', 
    \'MyTheme Menu Label\',
    \'edit_themes\', 
    \'theme_admin\',        // menu slug
    \'functions.php\',        // function
    get_bloginfo(\'template_directory\') .\'/img/favicon.png\',
    31
);

/* remove duplicate menu hack */
add_submenu_page(
    \'theme_admin\',        // parent slug, same as above menu slug
    \'\',        // empty page title
    \'\',        // empty menu title
    \'edit_themes\',        // same capability as above
    \'theme_admin\',        // same menu slug as parent slug
    \'functions.php\',        // same function as above
}
这不是很干净,但afaik是隐藏重复子菜单的唯一方法。

SO网友:mor7ifer

从…起the codex page on admin menus:

在插件创建自己的顶级菜单的情况下,第一个子菜单通常与顶级菜单具有相同的链接标题,因此链接将被复制。通过第一次调用add\\u submenu\\u page函数,可以避免重复的链接标题,同时父级\\u slug和menu\\u slug参数被赋予相同的值。

就我个人而言,我认为除了重命名顶部链接之外做任何事情都是不好的做法,因为这会破坏与管理栏其余部分的一致性。

SO网友:David

有一个函数应该涵盖这一点:

remove_submenu_page( $plugin_slug, $plugin_slug );

结束

相关推荐