7

在我正在创建的 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 午餐”。问题是我不希望“Eastview Custom”作为子链接。我希望唯一的子链接是“GLS 午餐”。我不知道该怎么做。谢谢你的帮助!

4

3 回答 3

9

根据法典

在插件创建自己的顶级菜单的情况下,第一个子菜单通常与顶级菜单具有相同的链接标题,因此链接将被复制。通过第一次调用 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');

现在你会认为这会根据 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_submenu_page( 'my-top-level-handle', 'New Item', 'New item', 'manage_options', 'new-handle');

希望这会有所帮助,可惜我找不到单个列表项的答案!

于 2012-07-23T14:35:15.557 回答
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");
于 2015-11-09T15:13:31.617 回答
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,
]);
于 2021-04-05T15:08:13.590 回答