Answers:
新的JetPack插件将其菜单链接放置在仪表板链接的正下方。通过过滤$ menu_order数组,将其菜单顺序设置为0来实现:
function jetpack_menu_order( $menu_order ) {
$jp_menu_order = array();
foreach ( $menu_order as $index => $item ) {
if ( $item != 'jetpack' )
$jp_menu_order[] = $item;
if ( $index == 0 )
$jp_menu_order[] = 'jetpack';
}
return $jp_menu_order;
}
出于好奇,如果您尝试将0作为menu_position会发生什么情况?
在网络上寻找解决方案,但未找到。只需执行此技巧(例如)。在这里,您具有本机职位列表:
- 2仪表板
- 4个分隔符
- 5个帖子
- 10媒体
- 15个链接
- 20页
- 25条留言
- 59分隔符
- 60外观
- 65个插件
- 70个用户
- 75工具
- 80设置
- 99分隔符
如果有更多项目,可以通过打印全局$ menu来读取每个项目的当前位置:
global $menu;
print_r($menu);
因此,如果我很了解,没有什么可以阻止我们像我们想要的那样重新排序菜单:
function re_order_menu () {
// ------- Put away items
$dashboard = $menu[2]
$separator1 = $menu[4]
$posts = $menu[5]
$media = $menu[10]
$links = $menu[15]
$pages = $menu[20]
$comments = $menu[25]
$separator2 = $menu[59]
$appearance = $menu[60]
$plugins = $menu[65]
$users = $menu[70]
$tools = $menu[75]
$settings = $menu[80]
$separator3 = $menu[99]
// -------- Reset menu
unset($menu[2]);
unset($menu[4]);
unset($menu[5]);
unset($menu[10]);
unset($menu[15]);
unset($menu[20]);
unset($menu[25]);
unset($menu[59]);
unset($menu[60]);
unset($menu[65]);
unset($menu[70]);
unset($menu[75]);
unset($menu[80]);
unset($menu[99]);
// -------- Re-order menu as you want
$dashboard = $menu[2];
$separator1 = $menu[4]
$posts = $menu[5];
$books = $menu[6];
/* my tons of custom items */
$authors = $menu[7];
$requests = $menu[8];
$clients = $menu[9];
$sellers = $menu[10];
$services = $menu[11];
$schedules = $menu[12];
/* let some space after */
$media = $menu[30];
$links = $menu[31];
$pages = $menu[32];
$comments = $menu[33];
$separator2 = $menu[59];
$appearance = $menu[60];
$plugins = $menu[65];
$users = $menu[70];
$tools = $menu[75];
$settings = $menu[80]
$separator3 = $menu[99];
}
add_action('admin_menu', 're_order_menu');
对我来说很好,所以,我认为这是合法的,我错了吗?
这是WordPress中的错误。请在Trac中查看此线程:http : //core.trac.wordpress.org/ticket/14755
已在4.4中修复...
https://developer.wordpress.org/reference/functions/add_menu_page/#notes
您可以使用此:
function my_move_post () {
global $menu;
$menu[6] = $menu[5]; //move post from post 5 to 6
unset($menu[5]); //free the position 5 so you can use it!
}
add_action('admin_menu', 'my_move_post');
现在,您可以使用位置5在“发布”菜单上方添加菜单。
对于WordPress 5及以下版本中的可行解决方案,请使用以下代码重新定位:
add_filter('custom_menu_order', '__return_true');
add_filter('menu_order', function($menu_order) {
if (
false !== ($k1 = array_search($v1 = 'edit.php', $menu_order))
&& false !== ($k2 = array_search($v2 = 'edit.php?post_type=foo', $menu_order))
) {
array_splice($menu_order, $k1, 0, $v2);
array_splice($menu_order, $k2 + 1, 1);
}
return $menu_order;
});
假设您没有多个菜单项争夺杆位。
在您链接的同一链接上,其内容为:
menu_position
(integer) (optional) The position in the menu order the post type should appear.
Default: null - defaults to below Comments
5 - below Posts
10 - below Media
20 - below Pages
60 - below first separator
100 - below second separator
因此,如果您设置menu_position
为4
,则应将其放在帖子上方。
-1
将其放置在Dashboard
链接上方的位置。
您可以使用十进制值(作为字符串)。例如,我将一些自定义帖子类型放置在菜单的最后位置(100001、100002、100003)。
然后,只需将这段代码放在“ 帖子”上方和“ 仪表板”菜单项下方即可。
function reorder_admin_menu() {
global $menu;
// Add one separator
$menu["3.1"] = array(
0 => '',
1 => 'read',
2 => 'separator_' . "anything_unique",
3 => '',
4 => 'wp-menu-separator'
);
// I have put my menu items waay at the end (exactly these values), so move them up
$menu["3.2"] = $menu[100001];
$menu["3.3"] = $menu[100002];
$menu["3.4"] = $menu[100003];
unset($menu[100001]);
unset($menu[100002]);
unset($menu[100003]);
// move Media menu (position 10) item to front, in the same group
$menu["3.5"] = $menu[10];
unset($menu[10]);
// Debug: ksort($menu); error_log( var_export( $menu, true ) );
}
add_action( 'admin_menu', 'reorder_admin_menu', 999 );