I am adding items to a CPT Admin menu using add_submenu_page
which works great, but they are added to the bottom of the sub-menu after the CPT options. I want to be able to have them on top , but I suppose this question can also apply to ordering all Admin based sub-menu items.
What I tried ( not working, I tried several variations),
function custom_menu_order($menu_ord) {
if (!$menu_ord) return true;
return array(
'edit.php?post_type=page' =>array(
'edit.php?post_type=note',
'edit_pages',
'notes',
)
);
}
add_filter('custom_menu_order', 'custom_menu_order');
add_filter('menu_order', 'custom_menu_order');
Would this be because menu_order
filter does not take sub-menu’s into account?
The filter ‘custom_menu_order’ will not work on the menu order because apply_filters in wp-admin/includes/menu.php supplies false as the filtered content. You can try changing false to $menu and the filter works grand.
Since we obviously can’t touch the core, here’s how I got it to work:
I know I’m necro-posting but I recently had the same issue. Please note that I used Rao’s solution on SO to get to this answer.
Assuming your CPT is called “notes”.
Definitely comment out the
echo '<pre>'.print_r($submenu,true).'</pre>';
if your having trouble. Also remember you can manually set the array too in thechange_note_submenu_order
function.Hope this helps somebody!
Another necro for a simpler issue.
I just wanted to move my custom link to the bottom (added comment on how it could be used to address original question as well):