I’m working on a plugin that constructs a top level menu and resides within its own directory in /wp-content/plugins.
For example, the plugin looks like this:
function main_menu() {
if(function_exists('add_menu_page')) {
add_menu_page('Main Menu Title', 'Main Menu', 'administrator', 'main-menu-handle', 'menu-display');
}
}
add_action('admin_menu', 'main_menu');
I would like to build out additional menu items as plugins in the future so that they may reside in their own directory within /wp-content/plugins but will add themselves to this particular custom menu.
Ideally, these new plugins would register themselves like this:
function register_submenu() {
if(function_exists('add_submenu_page')) {
add_submenu_page('main-menu-handle', 'Widget Title', 'Widget', 'administrator', 'widget-handle', 'widget_display');
}
}
add_action('admin_menu', 'register_submenu');
But I can’t seem to make this work mainly because of the way WordPress uses the admin.php and the page query string parameter to navigate custom menus.
Any insight?
It sounds as if you’re having problems adding submenus from a plugin to a parent item registered in another plugin.
Add priorities to your
admin_menu
actions to make sure the parent(top level) item exists at the point your additional plugins attempt to add items to that menu..Add top level
Add sub items
Default priority is 10, so your two callbacks were possibly executing in the wrong order.
Let me know if that helps.