web-dev-qa-db-fra.com

Comment supprimer le lien en double de add_menu_page

Dans le menu d'administration de thème ci-dessous, le libellé "MyTheme Menu" est dupliqué deux fois dans le menu latéral, une fois pour le lien du menu principal et de nouveau pour le premier lien de sous-menu.

Comment puis-je supprimer la 2ème instance du lien

add_menu_page(
    "MyTheme", 
    "MyTheme Menu Label", //THIS IS REPEATED TWICE IN THE MENU
    "edit_themes", 
    "functions.php", 
    'theme_admin', 
    get_bloginfo('template_directory') .'/img/favicon.png',31
);

add_submenu_page(
    'functions.php', 
    "SEO Options",
    "SEO",
    'edit_themes', 
    'my-seo-options', 
    'theme_admin'
);

add_submenu_page(
    'functions.php', 
    "Misc Options",
    "Misc",
    'edit_themes', 
    'my-misc-options', 
    'theme_admin'
);

 //etc...
4
Scott B

Il existe une solution pour masquer ce sous-menu créé automatiquement. Dans le passé, je l'ai utilisé assez souvent, mais dernièrement, je l'ai laissé tel quel (ou en le renommant, comme suggéré par m0r7if3r).

Notez également que, mis à part votre question principale, vous avez inversé les positions des arguments menu_slug et function dans add_menu_page, reportez-vous à la section codex .

Voici comment cela se fait de toute façon:

/* Add top level menu */
add_menu_page(
    'MyTheme', 
    'MyTheme Menu Label',
    'edit_themes', 
    'theme_admin',        // menu slug
    'functions.php',        // function
    get_bloginfo('template_directory') .'/img/favicon.png',
    31
);

/* remove duplicate menu hack */
add_submenu_page(
    'theme_admin',        // parent slug, same as above menu slug
    '',        // empty page title
    '',        // empty menu title
    'edit_themes',        // same capability as above
    'theme_admin',        // same menu slug as parent slug
    'functions.php',        // same function as above
}

Ce n’est pas très clair, mais je pense que c’est le seul moyen de cacher le sous-menu en double.

4
Johannes Pille

De la page de codex sur les menus de l'administrateur :

Lorsqu'un plugin crée son propre menu de niveau supérieur, le premier sous-menu aura normalement le même titre que le menu de niveau supérieur et le lien sera donc dupliqué. Le titre du lien en double peut être évité en appelant la fonction add_submenu_page pour la première fois, les paramètres parent_slug et menu_slug ayant la même valeur.

Personnellement, je pense que ce serait une mauvaise pratique de faire autre chose que de renommer le lien en haut, car cela romprait la cohérence avec le reste de la barre d’administration.

6
mor7ifer

Il y a une fonction qui devrait couvrir ceci:

remove_submenu_page( $plugin_slug, $plugin_slug );
0
David