1

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?

1 Answer 1

5

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_action('admin_menu', 'main_menu', 100 ); 

Add sub items

add_action('admin_menu', 'register_submenu', 105 ); 

Default priority is 10, so your two callbacks were possibly executing in the wrong order.

Let me know if that helps.

1
  • That took care of it. Good stuff, I appreciate it! Commented Jan 4, 2011 at 16:07

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.