Unless I misunderstand the question, this should do the trick:
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>";
}
EDIT:
Here's the easiest way to hide the first sub-menu item.
1) Create admin.css and move it to /[your template dir]/css/
2) Add this to your admin.css:
#adminmenu li#toplevel_page_main_menu li.wp-first-item {
display: none !important;
}
3) Add the following code to your 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' );
}
$submenu
var inside a callback hooked ontoadmin_menu
.$menu_slug
?menu_slug
andmenu_slug_sub_menu_1