WordPress: Change admin submenu order

I have created and registered an admin page as a sub-menu under ‘Posts’ admin menu.
But the problem is its coming at the end of the wp-submenus(ie., after ‘Tags’),

How to change the order of this custom admin page submenu entry to appear after ‘Add new’ ?

Read More

I’m using this function to register my sub-menu under edit.php(Posts menu)

add_submenu_page( 
       'edit.php', 
       "my custom submenu", 
       "my custom submenu", 
       CAPABILITY, 
       'my_custom_submenu', 
       "scrollcore_newsroom_articles" 
     );

Related posts

Leave a Reply

1 comment

  1. Found the solution, just need to add this function to your functions.php

    /*Change menu-order*/
    
    add_filter( 'custom_menu_order', 'so_18766477_submenu_order' );
    
    function so_18766477_submenu_order( $menu_ord ) 
    {
        global $submenu;
    
        // Enable the next line to see all menu orders
        //echo '<pre>'.print_r($submenu,true).'</pre>';
    
        $arr = array();
        $arr[] = $submenu['edit.php'][5];     //my original order was 5,10,15,16,17,18
        $arr[] = $submenu['edit.php'][10];
        $arr[] = $submenu['edit.php'][18];
        $arr[] = $submenu['edit.php'][17];
        $arr[] = $submenu['edit.php'][15];
        $arr[] = $submenu['edit.php'][16];
        $submenu['edit.php'] = $arr;
    
        return $menu_ord;
    }
    

    Here by choosing edit.php, I’m targeting ‘Posts’ menu.
    You can choose any file that you want its sub-menu to be reordered, like plugins.php, themes.php, tools.php etc