Wordpress: Change admin submenu order

2019-03-14 05:55发布

问题:

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' ?

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" 
     );

回答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



标签: php wordpress