web-dev-qa-db-fra.com

Comment empêcher la page parent d'administrateur d'apparaître en tant que page d'administrateur enfant

J'utilise ce code:

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

Ce qui ajoute la page d'administration de premier niveau. Quand j'ajoute:

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

J'obtiens non seulement la page enfant souhaitée, mais également la page parent qui devient une page enfant d'elle-même.

2
Mild Fuzz

À moins que je ne comprenne mal la question, cela devrait faire l'affaire:

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

MODIFIER:

Voici le moyen le plus simple de masquer le premier élément de sous-menu.

1) Créez admin.css et déplacez-le vers/[votre répertoire de modèle]/css /

2) Ajoutez ceci à votre admin.css:

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

3) Ajoutez le code suivant à votre functions.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' );
}
3
Paul

utilisez remove_submenu_page () comme ceci:

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 renvoie à la première page du sous-menu .

5
frustigor

L'astuce standard consiste à répéter la page du menu principal en tant que page de sous-menu, sans le titre du menu (3ème paramètre).

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

Ça vous donnera

Menu Title
Submenu Title 1
Submenu Title 2
1
kitchin

add_action ('admin_menu', 'mon_admin_menu');

function my_admin_menu () {add_menu_page ('Optins', 'Options de thème', 'manage_options', 'options', 'options_admin_page', 'dashicons-admin-generic', 6); add_submenu_page ('options', 'First Sub Options', 'Première Option', 'manage_options', 'options', 'options_admin_sub_page_first'); add_submenu_page ('options', 'Options secondaires secondaires', 'Options secondaires secondaires', 'options_administratives', 'option secondaire', 'options_admin_sub_page_secondes'); } function options_admin_page () {

}

fonction options_admin_sub_page_first () {

}

fonction options_admin_sub_page_second () {

}

Now you will get something like it, simple :)

0
MS Rahman

Y a-t-il une raison pour laquelle vous n’utilisez pas simplement remove_submenu_page() comme applicable pour supprimer la page en cours d’ajout, puis simplement créer (ou reconstruire, comme le cas peut être) votre structure de menu?

Mais en réalité, ce serait un bidouillage, et la nécessité d’utiliser un bidouillage indique que quelque chose qui fait est mauvais doit être corrigé. Pour cela, nous aurons probablement besoin du code utilisé.

0
Chip Bennett