如何防止父管理页面以子管理页面的形式出现

时间:2011-11-21 作者:Mild Fuzz

我正在使用此代码:

add_menu_page($page_title, $menu_title, $this->capability, $menu_slug, $function);
正在添加顶级管理页面。当我添加时:

add_submenu_page( $menu_slug, \'sub menu 1\', \'sub menu 1\', $this->capability, $menu_slug . \'_sub_menu_page_1\', $function );
我不仅得到了所需的子页面,而且父页面也会移动成为其自身的子页面。

5 个回复
最合适的回答,由SO网友:Paul 整理而成

除非我误解了这个问题,否则应该这样做:

add_action(\'admin_menu\', \'add_menu_pages\');

function add_menu_pages() {
    add_menu_page(\'Menu Title\', \'Menu Title\', 10, \'main_menu\', \'submenu_1_callback\');
    add_submenu_page(\'main_menu\', \'Sub Menu Title 1\', \'Sub Menu Title 1\', 10,  \'main_menu\' , \'submenu_1_callback\');
    add_submenu_page(\'main_menu\', \'Sub Menu Title 2\', \'Sub Menu Title 2\', 10, \'sub_menu\' , \'submenu_2_callback\');
}

function submenu_1_callback() {
    echo "<h2>" . __( \'Toplevel & Sublevel 1\', \'menu-test\' ) . "</h2>";
}

function submenu_2_callback() {
    echo "<h2>" . __( \'Sublevel 2\', \'menu-test\' ) . "</h2>";
}
编辑:

下面是隐藏第一个子菜单项的最简单方法。

1) 创建管理员。css并将其移动到/[模板目录]/css/

2) 将此添加到您的管理员。css:

#adminmenu li#toplevel_page_main_menu li.wp-first-item {
    display: none !important;
}
3)向函数中添加以下代码。php

add_action(\'admin_enqueue_scripts\', \'custom_admin_css\');
function custom_admin_css() {
    wp_enqueue_style( \'admin_css\', (get_template_directory_uri() . \'/css/admin.css\'), false, \'1.0.0\' );
}

SO网友:frustigor

按如下方式使用remove\\u submenu\\u page():

add_action(\'admin_menu\',\'your_add_menu_function\');
function your_add_menu_function() {
  add_menu_page(\'Menu Page Title\',\'Menu Name\',\'edit_theme_options/others caps...\',\'parent_menu_slug\',...);
  add_submenu_page(\'parent_menu_slug\',\'Menu Page Title\',\'Menu Name\',\'...caps...\',\'sub_menu_slug\',...);
  add_submenu_page(...);
  remove_submenu_page(\'parent_menu_slug\',\'parent_menu_slug\'); // pay a attention
}
确定,parent\\u菜单链接到first submenu

SO网友:kitchin

标准技巧是将主菜单页作为子菜单页重复,而不使用菜单标题(第三个参数)。

function add_menu_pages() {
    add_menu_page(\'Page Title\', \'Menu Title\', \'edit_posts\', \'main_menu\', \'menu_1_callback\');
    add_submenu_page(\'main_menu\', \'Page Title\', \'\', \'edit_posts\',  \'main_menu\' , \'menu_1_callback\');
    add_submenu_page(\'main_menu\', \'Page Title 1\', \'Submenu Title 1\', \'edit_posts\',  \'main_menu\' , \'submenu_1_callback\');
    add_submenu_page(\'main_menu\', \'Page Title 2\', \'Submenu Title 2\', \'edit_posts\', \'sub_menu\' , \'submenu_2_callback\');
}
那会给你

Menu Title
Submenu Title 1
Submenu Title 2

SO网友:Chip Bennett

你有什么理由不remove_submenu_page() 是否要删除正在添加的页面,然后构建(或重新构建,视情况而定)菜单结构?

但实际上,这将是一种黑客行为,而使用黑客行为的必要性意味着某些做错了的事情需要修复。为此,我们可能需要实际使用的代码。

SO网友:MS Rahman

添加\\u操作(“admin\\u菜单”、“my\\u admin\\u菜单”);

函数my\\u admin\\u menu(){添加\\u menu\\u页面(\'选项\',\'主题选项\',\'管理\\u选项\',\'选项\',\'选项\\u admin\\u页面\',\'dashicons admin generic\',6);添加\\u子菜单\\u页面(\'选项\',\'第一个子选项\',\'第一选项\',\'管理\\u选项\',\'选项\',\'选项\\u admin\\u Sub\\u page\\u First\');添加\\u子菜单\\u页面(“options”、“Second Sub options”、“Second Option”、“manage\\u options”、“Second Option”、“options\\u admin\\u Sub\\u page\\u Second”);}function options\\u admin\\u page(){

}

function options\\u admin\\u sub\\u page\\u first(){

}

function options\\u admin\\u sub\\u page\\u second(){

}

Now you will get something like it, simple :)

结束

相关推荐

在wp-admin中操作主题列表

我正在运行一个多站点网络,安装并激活了100多个主题。有没有办法操纵wp admin中可用主题的列表,以便某些主题首先出现在列表中?(一种“特色”或“推荐”)在前9个字母之后,或者按照默认字母顺序排列,就可以了。显然,在谷歌上搜索“wordpress”和“themes”这两个词在这种情况下是毫无结果的。