Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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?

share|improve this question
add comment

1 Answer

up vote 3 down vote accepted

If i'm following, 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.

share|improve this answer
    
That took care of it. Good stuff, I appreciate it! –  Tom Jan 4 '11 at 16:07
    
You're welcome. :) –  t31os Jan 4 '11 at 16:18
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.