我该如何完成?
#1 楼
核心菜单项的位置2仪表板
4分隔符
5帖子
10 Media
15链接
20页
25注释
59分隔符
60外观
65插件
70用户
75工具
80设置
99分隔符
“菜单位置”的参数说明
$position
(整数)(可选)应该显示菜单顺序中的位置。默认情况下,如果省略此参数,
菜单将出现在菜单结构的底部。
数字越大,在菜单中的位置越低。
警告:如果两个菜单项
使用相同的position属性,则其中一项可能会被覆盖
,这样仅显示一项!可以通过
使用十进制而不是整数值来减少冲突的风险,例如63.3而不是63。
默认值:菜单结构的底部
评论
如何在'menu_position'=> 3中使用小数?我想将position = 3用于许多自定义帖子类型。
– Bikram
20-2-4在9:19
#2 楼
新的JetPack插件将其菜单链接放置在仪表板链接的正下方。这样做是通过将其菜单顺序设置为0,通过过滤$ menu_order数组来实现的: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会发生什么? br />
#3 楼
在网络上寻找解决方案,但未找到。只需执行此技巧(例如)。在这里,您具有职位的本地列表: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');
它很好用对我来说,我认为这是合法的,我错了吗?
评论
依靠魔术数字的非常脆弱的解决方案。一旦添加/删除了其他插件,该插件就会中断。
–沃尔夫
19年11月12日23:19
#4 楼
我用过'menu_postion'=> 0,1,2,3,4。没关系。如果您玩弄它,则可以轻松解决。
使用'menu_position'=> 1应该将其放在分隔符上方的Dashboard菜单项下方。 0应将其放在仪表板上方
#5 楼
这是WordPress中的错误。请在Trac中查看此线程:http://core.trac.wordpress.org/ticket/14755已修复4.4 ...
https:// developer。 wordpress.org/reference/functions/add_menu_page/#notes
#6 楼
您可以使用此功能: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在“发布”菜单上方添加菜单。
评论
这对我不起作用。我将其放置在我的全站点插件中,我的custom-post-type.php文件在其中
–丹尼尔(Daniel)
14年8月14日在16:19
#7 楼
这是整个问题的警告...WordPress 4.9.2
wp-admin / menu.php:
// If we're to use $_wp_last_object_menu, increment it first.
$ptype_menu_position = is_int( $ptype_obj->menu_position ) ? $ptype_obj->menu_position : ++$_wp_last_object_menu;
注意:必须为整数且尚未设置,否则将进入列表的底部。
#8 楼
对于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;
});
这假定您没有多个菜单项争夺杆位。
#9 楼
在链接的同一链接上,它显示为: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
链接上方。评论
我尝试了4,但与5完全相同。
– janoChen
2011-2-7在19:23
嗯尝试过1-3次?我认为也许“ 1”(或“ 0”)是仪表板。也许2-3的东西会起作用
–扎克
2011年2月7日在20:32
0 1 2 3在仪表板之前,在帖子下方4。真的是不可能的!
– janoChen
2011-2-8在5:44
哇。破坏了很多WordPress?那我不知道:-/
–扎克
2011-2-8在5:52
我认为4是Posts上方的分隔符,5是Posts,因此,如果将菜单位置设置为3,它将位于分隔符之前。当然使用默认配置。将我的插件页面设置为4覆盖了分隔符,但确实出现在帖子上方。嗯...
– Goldenapples
2011年3月28日19:50
#10 楼
您可以使用十进制值(作为字符串)。例如,我有一些自定义帖子类型,它们放置在菜单的最后位置(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 );
评论
好问题,似乎那是一个不会去的地方。