Supprimer le sous-menu principal en double dans l'administrateur?

11

Lorsque j'utilise add_menu_page& add_submenu_pagepour ajouter des éléments de menu,

add_menu_page( 'Forms', 'Forms', 'administrator', 'forms', 'forms_job_menupage_cb' );
add_submenu_page( 'forms', 'Job Applications', 'Job Applications', 'administrator', 'job-applications', 'forms_job_menupage_cb' );
add_submenu_page( 'forms', 'Quote Requests', 'Quote Requests', 'administrator', 'quote-req', 'forms_req_menupage_cb' );
add_submenu_page( 'forms', 'Contact', 'Contact', 'administrator', 'contact', 'forms_contact_menupage_cb' );

Je vais avoir quelque chose comme

  • Formes
    • Formes
    • Demandes d'emploi
    • Demandes de devis
    • Contacts

Est-il possible de le créer de telle sorte qu'il devienne

  • Formes
    • Demandes d'emploi
    • Demandes de devis
    • Contacts

En d'autres termes, les formulaires seront liés aux demandes d'emploi et je ne veux pas l'élément de sous-menu Formulaires supplémentaire

JM au travail
la source

Réponses:

10

Salut @JM au travail:

Oui, c'est malheureusement que la page de sous-menu est ajoutée pour chaque page de menu. Ce serait bien s'il y avait une option mais hélas, il n'y en a pas actuellement .

Pour supprimer l'option de page de sous-menu dans WordPress 3.1 ou une grande utilisation remove_submenu_page()avec du code comme celui-ci dans le functions.phpfichier de votre thème , ou dans un .phpfichier d'un plugin que vous écrivez peut-être:

add_action( 'admin_menu', 'yoursite_admin_menu' );
function yoursite_admin_menu() {
  add_menu_page( 'Forms', 'Forms', 'administrator', 'forms', 'forms_job_menupage_cb' );
  add_submenu_page( 'forms', 'Job Applications', 'Job Applications', 'administrator', 'job-applications', 'forms_job_menupage_cb' );
  add_submenu_page( 'forms', 'Quote Requests', 'Quote Requests', 'administrator', 'quote-req', 'forms_req_menupage_cb' );
  add_submenu_page( 'forms', 'Contact', 'Contact', 'administrator', 'contact', 'forms_contact_menupage_cb' );
  remove_submenu_page('forms','forms');
}

Si vous utilisez toujours WordPress 3.0, vous devez utiliser unset()un élément de la variable globale $submenucomme ceci:

add_action( 'admin_menu', 'yoursite_admin_menu' );
function yoursite_admin_menu() {
  add_menu_page( 'Forms', 'Forms', 'administrator', 'forms', 'forms_job_menupage_cb' );
  add_submenu_page( 'forms', 'Job Applications', 'Job Applications', 'administrator', 'job-applications', 'forms_job_menupage_cb' );
  add_submenu_page( 'forms', 'Quote Requests', 'Quote Requests', 'administrator', 'quote-req', 'forms_req_menupage_cb' );
  add_submenu_page( 'forms', 'Contact', 'Contact', 'administrator', 'contact', 'forms_contact_menupage_cb' );
  unset($GLOBALS['submenu']['forms'][0]);
}
MikeSchinkel
la source
Merci beaucoup ........... :)
Ridwan Pujakesuma
1

J'ai dû ajouter_submenu_page, puis le supprimer (wp 4.0.1)

add_menu_page( 'Admin Tools', 'Admin Tools', 'manage_options','parent', '__return_null','', "70.23423" );
    // this 'hides' the extra.  actually, just makes the text nothing: ''  
    add_submenu_page( 'parent', '',     '', 'manage_options',   'parent',   '__return_null' );
    //ah, but this removes it completely (you need to add it, then remove it :/     
    remove_submenu_page('parent','parent');
Doug Cassidy
la source
1

Je suggérerais de conserver l'élément de menu supplémentaire, car c'est ainsi que fonctionnent tous les autres menus WP. (Je sais que ce n'est pas ce que vous avez demandé! ...) La façon dont les autres menus de haut niveau fonctionnent est qu'ils ont des étiquettes différentes pour le grand titre du menu et le duplicata en dessous (par exemple 'Utilisateurs', 'Tous les utilisateurs'; 'Outils', 'Outils disponibles'). Je pense qu'il est bon de s'en tenir au même paradigme, donc je renomme généralement le premier élément de sous-menu comme ceci:

<?php
add_menu_page( 'Plugin Name', 'Plugin Name', 'read', 'plugin-slug', $callback );
add_submenu_page( 'plugin-slug', 'Plugin Overview', 'Overview', 'read', 'plugin-slug', $callback );
Sam Wilson
la source
1

Attribuez le premier slug de sous-menu similaire au menu parent. Dans votre cas, remplacez 'job-applications' par le slug du menu principal 'forms'.

add_menu_page( 'Forms', 'Forms', 'administrator', 'forms', 'forms_job_menupage_cb' );
add_submenu_page( 'forms', 'Job Applications', 'Job Applications', 'administrator', 'forms', 'forms_job_menupage_cb' );
add_submenu_page( 'forms', 'Quote Requests', 'Quote Requests', 'administrator', 'quote-req', 'forms_req_menupage_cb' );
add_submenu_page( 'forms', 'Contact', 'Contact', 'administrator', 'contact', 'forms_contact_menupage_cb' );
Evgeniy Z.
la source