WordPress fügt Untermenüs zum benutzerdefinierten Menü hinzu

Lesezeit: 3 Minuten

In einem WordPress-Plugin, das ich erstelle, wird ein neues Admin-Menü der obersten Ebene mit einer Untermenüseite erstellt. Hier ist mein Code:

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

Dieser Code erstellt also ein neues Admin-Menü, “Eastview Custom”. Dann fügt es zwei Unterlinks hinzu: “Eastview Custom” und “GLS Lunch”. Das Problem ist, dass ich “Eastview Custom” nicht als Unterlink haben möchte. Ich möchte, dass der einzige Unterlink “GLS Lunch” ist. Ich kann nicht herausfinden, wie das geht. Danke für jede Hilfe!

Benutzer-Avatar
McNab

Laut Kodex

In Situationen, in denen ein Plugin sein eigenes Top-Level-Menü erstellt, hat das erste Untermenü normalerweise denselben Link-Titel wie das Top-Level-Menü und daher wird der Link dupliziert. Der doppelte Linktitel kann vermieden werden, indem die Funktion add_submenu_page beim ersten Mal aufgerufen wird, wobei den Parametern parent_slug und menu_slug derselbe Wert gegeben wird.

Was Sie auf dieser Seite hier sehen können: http://codex.wordpress.org/Adding_Administration_Menus#Sub-Menus

Laut dem Codex sollten Sie also in der Lage sein, so etwas wie das Folgende zu haben (beachten Sie, dass ich Ihren Benutzerebenenparameter durch Fähigkeiten ersetzt habe, da sie veraltet sind, und alles auf einfache Anführungszeichen standardisiert habe);

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

Nun könnte man meinen, dass dies auf Basis des Codex funktionieren würde – das tut es nicht. Es werden keine Untermenüpunkte angezeigt, nur weil es nur einen davon gibt. Wenn Sie ein weiteres Element hinzufügen, werden Sie sehen, dass dies funktioniert, dh;

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

Hoffe, das hilft ein bisschen, schade, dass ich die Antwort auf das einzelne Listenelement nicht finden konnte!

  • OK danke. Tut mir leid, dass ich nicht früher geantwortet habe. Das ist in Ordnung – auf der Website, auf der ich dies verwende, wird es mehr als eine Untermenüseite geben. Ich wollte nur wissen, wie man den doppelten Link entfernt. Vielen Dank!

    – Abraham

    23. Juli 2012 um 19:32 Uhr

  • Großartig, das hat bei mir funktioniert! Ich hatte Schwierigkeiten, in der WordPress-Dokumentation nachzuschauen. Vielen Dank.

    – Francisco Corrales Morales

    7. Februar 2014 um 16:28 Uhr

  • Arbeitete für mich.. Vielen Dank!

    – HCN

    8. Juli 2015 um 8:14 Uhr

  • Überwältigende Antwort. Genau das, wonach ich gesucht habe. Vielen Dank.

    – iSaumya

    13. Oktober 2016 um 13:35 Uhr

  • Schön, @iSaumya, froh, dass es geholfen hat.

    – McNab

    13. Oktober 2016 um 13:48 Uhr

Alternativ können Sie das Untermenü nach dem Erstellen des Hauptmenüs entfernen

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

  • Ich habe gerade beim Googeln meine alte Antwort auf diese Frage gefunden, da ich das gleiche Problem wieder hatte (immer eine kleine Überraschung, eine eigene Antwort zu finden :)). Ihre Antwort sollte die akzeptierte Antwort auf diese Frage sein, da sie das Problem tatsächlich löst. Schön!

    – McNab

    18. Juli 2018 um 10:45 Uhr

  • @McNab haha, klingt komisch. Freut mich, wenn es hilft

    – Lafif Astahdziq

    19. Juli 2018 um 15:17 Uhr

Benutzer-Avatar
Farshadi

Sie können diese Funktion verwenden

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

}

und verwenden Sie wie unten

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,
]);

1382290cookie-checkWordPress fügt Untermenüs zum benutzerdefinierten Menü hinzu

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy