Do wildcards not work with Menu Local Task? I am getting an offset error , Undefined offset: 4 in _menu_translate() 

 $items['admin/content/import-dashboard/new'] = array(
    'title' =&gt; 'Import Dashboard',
    'page callback' =&gt; 'drupal_get_form',
    'page arguments' =&gt; array('import_dashboard_new_content',"article"),
    'access arguments' =&gt; array('Import Dashboard Permission'),
    'type' =&gt; MENU_LOCAL_TASK | MENU_NORMAL_ITEM,
    'expanded' =&gt; TRUE,
  );
    $items['admin/content/import-dashboard/new/%'] = array(
    'title' =&gt; 'Import Dashboard',
    'page callback' =&gt; 'drupal_get_form',
    'page arguments' =&gt; array('import_dashboard_new_content',4),
    'access arguments' =&gt; array('Import Dashboard Permission'),
    'type' =&gt; MENU_LOCAL_TASK | MENU_NORMAL_ITEM,
    'expanded' =&gt; TRUE,
  );


I simply want to default new to article, and also use wildcards to support other arguments. 

I'm pretty flexible in my approach, so feel free to throw a few suggestions if it could be done better.

Can someone quickly suggest where I made my rookie mistake?



Indeed, changing to Menu Callback works when using the wildcard.  

$items['admin/content/import-dashboard/new/%'] = array(
    'title' =&gt; 'Import Dashboard',
    'page callback' =&gt; 'drupal_get_form',
    'page arguments' =&gt; array('import_dashboard_new_content',4),
    'access arguments' =&gt; array('Import Dashboard Permission'),
    'type' =&gt; MENU_CALLBACK,
    'expanded' =&gt; TRUE,
  );


Would still like to know why it fails when it a MENU_LOCAL_TASK or MENU_NORMAL_ITEM
The problem is that your menu items are local tasks, which are menu tabs, so on a given page drupal will load all the tabs for the current page.

So on the admin/content/import-dashboard/new page it loads your tab menu items:
admin/content/import-dashboard/new
admin/content/import-dashboard/new/%

but when it goes to get the second item there is no 4th param on the current page so it gets that error.

This is why when you change it to not be a MENU_LOCAL_TASK it stops the problem.

If you have a page that has menu tabs where the last part of the path is a wildcard, how could drupal know what all the possible tabs are? It can't.

This is why when you see menu tabs they are things like node/%/view, node/%/edit, etc. so you have a finite number of tabs and each has its own definition.

As a side note, yes you can use multiple menu item types, but using MENU_LOCAL_TASK | MENU_NORMAL_ITEM doesn't really make sense.
As an example MENU_IS_LOCAL_TASK | MENU_LINKS_TO_PARENT | MENU_VISIBLE_IN_BREADCRUMB is one that would make sense.

Also, I'm not sure if this is your full hook_menu() or if admin/content/import-dashboard exists somewhere else, but usually if you're doing tabs there is a parent page (in this case admin/content/import-dashboard) and a tab that is MENU_DEFAULT_LOCAL_TASK.

There is however the ability to set in your menu item:

'tab_parent' =&gt; 'admin/content/import-dashboard/new'


This allows you to set the parent page to use for tab items.
Without this it defaults to the path of the tab item minus its last path part.