How to create sub menu with a URL parameter?

You’d have to manipulate the global $submenu and modify the link in it. Or use jQuery.

The following example adds a submenu in the Dashboard menu and changes the destination link just after. The submenu page will dump the contents of the global var.

add_action( 'admin_menu', function()
{
    add_submenu_page(  
        'index.php',                  
        'Sandbox Options',          
        'Options',                  
        'administrator',            
        'sandbox_options',    
        function() { global $submenu; var_dump($submenu); }
    );
    global $submenu; 
    $submenu['index.php'][11][2] = 'index.php?page=sandbox_options&tab=3';
});

[Update]

The example given, Redux Framework, uses the following technique:

  • Add a menu page with a slug example_slug.

  • Add the submenu pages and use the same slug example_slug + &tab=N.

  • All the menu and submenu pages are rendered with the menu callback. The submenu have null callbacks.

Example:

add_submenu_page(  
    'sandbox',                  
    'Sandbox Options',          
    'Options',                  
    'add_users',            
    'sandbox&tab=4',    
    '__return_null'
); 

Leave a Comment