Wordpress将子菜单添加到自定义菜单

时间:2012-07-23 13:34:34

标签: wordpress menu wordpress-plugin

在我正在创建的wordpress插件中,它正在创建一个带有子菜单页面的新顶级管理菜单。这是我的代码:

add_menu_page('Eastview Custom', 'Eastview Custom', 5,"eastview-custom");
add_submenu_page("eastview-custom","GLS Lunch Orders","GLS Lunch",5,'glsLunch','glsLunch');

因此,此代码会创建一个新的管理菜单“Eastview Custom”。然后它添加了两个子链接:“Eastview Custom”和“GLS Lunch”。问题是我不希望“Eastview Custom”作为子链接。我想唯一的子链接是“GLS午餐”。我无法弄清楚如何做到这一点。谢谢你的帮助!

3 个答案:

答案 0 :(得分:8)

根据法典

  

在插件创建自己的顶级菜单的情况下,第一个子菜单通常具有与顶级菜单相同的链接标题,因此链接将被复制。第一次调用add_submenu_page函数时,可以避免重复的链接标题,同时给出parent_slug和menu_slug参数相同的值。

您可以在此页面上看到:http://codex.wordpress.org/Adding_Administration_Menus#Sub-Menus

因此,根据Codex,您应该能够拥有以下内容(请注意,我已将用户级别参数替换为不推荐使用的功能,并将其全部标准化为单引号);

add_menu_page('Eastview Custom', 'Eastview Custom', 'manage_options', 'my-top-level-handle');
add_submenu_page( 'my-top-level-handle', 'GLS Lunch Orders', 'GLS Lunch', 'manage_options', 'my-top-level-handle');

现在你认为这可以在食典委的基础上发挥作用 - 但事实并非如此。它不会显示任何子菜单项,因为它们只有一个。如果你添加另一个项目,你会发现这是有效的,即;

add_menu_page('Eastview Custom', 'Eastview Custom', 'manage_options', 'my-top-level-handle');
add_submenu_page( 'my-top-level-handle', 'GLS Lunch Orders', 'GLS Lunch', 'manage_options', 'my-top-level-handle');
add_submenu_page( 'my-top-level-handle', 'New Item', 'New item', 'manage_options', 'new-handle');

希望这有点帮助,很遗憾我找不到单个列表项的答案!

答案 1 :(得分:1)

另一种方法是您可以在创建主菜单后删除子菜单

add_menu_page('Eastview Custom', 'Eastview Custom', 5,"eastview-custom");
add_submenu_page("eastview-custom","GLS Lunch Orders","GLS Lunch",5,'glsLunch','glsLunch');
remove_submenu_page("eastview-custom", "eastview-custom");

答案 2 :(得分:0)

您可以使用此功能

function custom_add_admin_menu_page($args = []) {
    $args = wp_parse_args($args, [
        'page_title' => '',
        'menu_title' => '',
        'capability' => 'manage_options',
        'function'   => false',
        'menu_slug'  => '',
        'icon_url'   => '',
        'position'   => 20,
    ]);
   add_menu_page(
        $args['page_title'],
        $args['menu_title'],
        $args['capability'],
        $args['menu_slug'],
        $args['function'],
        $args['icon_url'],
        $args['position']
    );

    add_action('admin_head', function () use ($args) {
        if (!$args['function']) {
            
            remove_submenu_page($args['menu_slug'], $args['menu_slug']);
        }
    }, 99);

}

并使用如下

custom_add_admin_menu_page([
    'page_title' => __('your page title', 'your domain'),
    'menu_title' => __('your menu title', 'your domain'),
    'menu_slug'  => 'your slug',
    'icon_url'   => 'dashicons-page',
    'position'   => 20,
]);