WordPress is doing exactly what you’re telling it to do. Refer to the Codex entry for add_submenu_page(). The functions arguments are like so:
<?php
add_submenu_page(
$parent_slug,
$page_title,
$menu_title,
$capability,
$menu_slug,
$function
);
?>
So, you’re assigning the same string to $parent_slug and $menu_slug. For obvious reasons, these two need to be different.
-
$parent_slugis the slug of the parent menu page. You assign that asbasename( __FILE__ )in youradd_menu_page()call. -
$menu_slugis the slug of the sub-menu page. Note what the Codex says:If you want to NOT duplicate the parent menu item, you need to set the name of the $menu_slug exactly the same as the parent slug.
While this statement is written confusingly, I think it’s saying that by setting $parent_slug and $menu_slug the same, you’re replacing the main-parent sub-menu entry with this page – and it sounds like that’s not what you want to do.