wake-up-neo.net

Verhindern, dass die übergeordnete Administrationsseite als untergeordnete Administrationsseite angezeigt wird

Ich benutze diesen Code:

add_menu_page($page_title, $menu_title, $this->capability, $menu_slug, $function);

Welches ist das Hinzufügen von Top-Level-Admin-Seite. Wenn ich hinzufüge:

add_submenu_page( $menu_slug, 'sub menu 1', 'sub menu 1', $this->capability, $menu_slug . '_sub_menu_page_1', $function );

Ich erhalte nicht nur die gewünschte untergeordnete Seite, sondern auch die übergeordnete Seite wird zu einer untergeordneten Seite für sich.

2
Mild Fuzz

Sofern ich die Frage nicht falsch verstehe, sollte dies der Trick sein:

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>";
}

BEARBEITEN:

Hier ist die einfachste Möglichkeit, den ersten Untermenüpunkt auszublenden.

1) Erstelle admin.css und verschiebe es nach/[dein Vorlagenverzeichnis] ​​/ css /

2) Fügen Sie dies zu Ihrer admin.css hinzu:

#adminmenu li#toplevel_page_main_menu li.wp-first-item {
    display: none !important;
}

3) Fügen Sie den folgenden Code zu Ihrer functions.php hinzu

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

benutze remove_submenu_page () wie folgt:

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
}

ok, parent_menu verweist auf die erste Untermenüseite .

5
frustigor

Der Standardtrick besteht darin, die Hauptmenüseite als Untermenüseite ohne Menütitel (3. Parameter) zu wiederholen.

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

Das wird dir geben

Menu Title
Submenu Title 1
Submenu Title 2
1
kitchin

add_action ('admin_menu', 'my_admin_menu');

function my_admin_menu () {add_menu_page ('Optins', 'Theme Options', 'manage_options', 'options', 'options_admin_page', 'dashicons-admin-generic', 6); add_submenu_page ('options', 'First Sub Options', 'First Option', 'manage_options', 'options', 'options_admin_sub_page_first'); add_submenu_page ('options', 'Second Sub Options', 'Second Option', 'manage_options', 'second-option', 'options_admin_sub_page_second'); } function options_admin_page () {

}

funktion options_admin_sub_page_first () {

}

funktion options_admin_sub_page_second () {

}

Now you will get something like it, simple :)

0
MS Rahman

Gibt es einen Grund, warum Sie nicht einfach remove_submenu_page() verwenden, um die hinzugefügte Seite zu entfernen, und dann einfach erstellen (oder neu erstellen, als kann der fall sein) deine menüstruktur?

Aber das wäre wirklich ein Hack, und die Notwendigkeit, einen Hack zu verwenden, zeigt an, dass etwas falsch gemacht wurde und behoben werden muss. Dafür benötigen wir wahrscheinlich den tatsächlich verwendeten Code.

0
Chip Bennett