有两个过滤器的组合,menu_order
做这项工作,但你也使用custom_menu_order
要启用menu_order
.
function wpse_233129_custom_menu_order() {
return array( \'index.php\', \'upload.php\' );
}
add_filter( \'custom_menu_order\', \'__return_true\' );
add_filter( \'menu_order\', \'wpse_233129_custom_menu_order\' );
这将使上载。php(媒体屏幕)位于仪表板之后,然后其他顶级菜单项将紧随其后。
如果要将介质放置在其他位置,只需列出阵列中应位于介质之前的所有其他屏幕。
或者,您可以直接寻址WP的全局$菜单阵列:
function wpse_233129_admin_menu_items() {
global $menu;
foreach ( $menu as $key => $value ) {
if ( \'upload.php\' == $value[2] ) {
$oldkey = $key;
}
}
$newkey = 26; // use whatever index gets you the position you want
// if this key is in use you will write over a menu item!
$menu[$newkey]=$menu[$oldkey];
$menu[$oldkey]=array();
}
add_action(\'admin_menu\', \'wpse_233129_admin_menu_items\');
请注意关于是否可能覆盖另一个菜单项的注释。在搜索不发生冲突的数组索引时进行编码,留给读者作为练习。当然,如果使用第一种方法,这不是问题。
像这样摆弄WP的globals会让我觉得脏兮兮的。WP内部工作方式的改变可能会把事情搞砸。尽可能使用挂钩和API提供的抽象。