使用MENU_POSITION在Dashboard和Posts之间添加两个条目

时间:2019-12-17 作者:hawbsl

我们希望在仪表板和帖子之间添加两个新的(自定义帖子类型)条目。

在本项目中,对于最终用户,有两项by far 他的仪表板中使用最多的项目。所以我们希望他们在最高层。

这些似乎是内置的menu_position 设置:

enter image description here

这只提供一个插槽,menu\\u位置=3, 在仪表板和立柱之间。我们需要two 插槽!

我们的尝试:

1) 有时建议使用小数作为字符串(即3.1和3.2)。但这在当前的WordPress中肯定不起作用。我们的菜单项下拉到默认位置。

2) 将两者都设置为3。这是不允许的。这会导致其中一个下降到默认位置。

此网站上的其他建议涉及一个自定义函数,该函数all 菜单项一个接一个地重新排序,但这看起来很脆弱。如果以后再添加其他项目怎么办?难道我们不能只重新排列仪表板向上(或向下)以腾出空间吗?

1 个回复
最合适的回答,由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;
}

相关推荐