我们希望在仪表板和帖子之间添加两个新的(自定义帖子类型)条目。
在本项目中,对于最终用户,有两项by far 他的仪表板中使用最多的项目。所以我们希望他们在最高层。
这些似乎是内置的menu_position
设置:
这只提供一个插槽,menu\\u位置=
3, 在仪表板和立柱之间。我们需要
two 插槽!
我们的尝试:
1) 有时建议使用小数作为字符串(即3.1和3.2)。但这在当前的WordPress中肯定不起作用。我们的菜单项下拉到默认位置。
2) 将两者都设置为3。这是不允许的。这会导致其中一个下降到默认位置。
此网站上的其他建议涉及一个自定义函数,该函数all 菜单项一个接一个地重新排序,但这看起来很脆弱。如果以后再添加其他项目怎么办?难道我们不能只重新排列仪表板向上(或向下)以腾出空间吗?
最合适的回答,由SO网友:nmr 整理而成
可以使用过滤器更改菜单项的顺序menu_order
add_filter( \'menu_order\', \'se354759_menu_order\' );
add_filter( \'custom_menu_order\', \'__return_true\' );
function se354759_menu_order ($menu_order)
{
$cpts = [
\'edit.php?post_type=\' . \'custom-post-type\',
\'edit.php?post_type=\' . \'another-cpt\'
];
//
// remove and save first item ("dashboard") in variable
$first_item = array_shift( $menu_order );
foreach( $cpts as $ctp )
{
$idx = array_search( $ctp, $menu_order );
if ( $idx === false )
continue;
//
// remove CPT menu item from array
unset( $menu_order[$idx] );
//
// add CPT item to the beginning of the array
array_unshift( $menu_order, $ctp );
}
//
// re-add "dashboard" item
array_unshift( $menu_order, $first_item );
return $menu_order;
}