私はこのコードを使っています:
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 );
目的の子ページだけでなく、親ページも自分自身の子ページになるように移動します。
私が質問を誤解しない限り、これはトリックをするべきです:
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' );
}
次のように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は最初のサブメニューページにリンクしています。
標準的なトリックは、メインメニューページをサブメニューページとして、メニュータイトルなしで繰り返すことです(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
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(){
}
追加されているページを削除するために remove_submenu_page()
を使用せずに、単にビルド(または再ビルド)するのではないかという理由がありますか。場合によっては)あなたのメニュー構造は?
しかし、実際には、それはハックであり、ハックを使用する必要があるということは、修正が必要な何か間違っていることを示しています。そのためには、実際に使用されているコードが必要になるでしょう。