web-dev-qa-db-ja.com

親管理ページが子管理ページとして表示されないようにする方法

私はこのコードを使っています:

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

これはトップレベルの管理者ページを追加しています。私が追加するとき:

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

目的の子ページだけでなく、親ページも自分自身の子ページになるように移動します。

2
Mild Fuzz

私が質問を誤解しない限り、これはトリックをするべきです:

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

編集:

これが最初のサブメニュー項目を隠す最も簡単な方法です。

1)admin.cssを作成して/ [あなたのテンプレートディレクトリ]/css /に移動します。

2)これをadmin.cssに追加してください。

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

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

次のようにremove_submenu_page()を使用してください。

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
}

はい、parent_menuは最初のサブメニューページにリンクしています。

5
frustigor

標準的なトリックは、メインメニューページをサブメニューページとして、メニュータイトルなしで繰り返すことです(3番目のパラメータ)。

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

それはあなたを与えるでしょう

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'、 'テーマオプション'、 'manage_options'、 'options'、 'options_admin_page'、 'dashicons-admin-generic'、6); add_submenu_page( 'オプション'、 '最初のサブオプション'、 '最初のオプション'、 'manage_options'、 'オプション'、 'options_admin_sub_page_first'); add_submenu_page( 'オプション'、 '2番目のサブオプション'、 '2番目のオプション'、 'manage_options'、 '2番目のオプション'、 'options_admin_sub_page_second'); function options_admin_page(){

}

function options_admin_sub_page_first(){

}

function options_admin_sub_page_second(){

}

Now you will get something like it, simple :)

0
MS Rahman

追加されているページを削除するために remove_submenu_page() を使用せずに、単にビルド(または再ビルド)するのではないかという理由がありますか。場合によっては)あなたのメニュー構造は?

しかし、実際には、それはハックであり、ハックを使用する必要があるということは、修正が必要な何か間違っていることを示しています。そのためには、実際に使用されているコードが必要になるでしょう。

0
Chip Bennett