管理菜单-在子菜单页面上突出显示顶级菜单(不显示子菜单)

时间:2013-08-30 作者:Jayawi Perera

这就是目前的情况:

我正在编写一个具有顶级菜单页的插件。该插件还包含其他子菜单页。子菜单页未分配父级slug(因此它们不会出现在管理菜单中)。我的要求是执行以下操作:

管理菜单中只有顶层菜单页菜单项(不应显示子菜单页菜单项)

  • 在子菜单页上突出显示顶层菜单页菜单项时,我已尝试给子菜单页添加一个父菜单项。当然,这会使其显示在顶级菜单项下。然后,我尝试使用remove\\u submenu\\u page删除子菜单项。但是,由于这会删除整个子菜单页,因此无法解决问题。

    我认为合乎逻辑的做法是给父菜单项一个slug,因为顶级菜单项需要知道正在访问的页面位于它下面。那么,问题是没有显示子菜单页的菜单项。我找不到直接处理菜单项的函数。

    这是正确的方法还是有更好的选择?我是否可以利用行动/过滤器/挂钩来执行我需要做的事情?

    Edit #1:<进行了进一步的研究/测试。在add\\u submenu\\u page调用中将menu\\u title参数设置为null或“”会使标题不显示。然而,<;li>;包含子菜单项的仍然存在,并且可以与交互。当有许多子菜单页(如我的情况)时,空的<;li>;元素将相加,并在菜单上创建一个长空白区域。这远非理想,因此,我仍在寻找解决方案。

    Edit #2:试图在@s\\u ha\\u dum的评论后操纵$子菜单全局。但是,删除与页面相关的菜单部分也会导致删除类似于remove\\u submenu\\u page的页面,从而使该页面无法访问。

  • 1 个回复
    SO网友:Askelon

    这是一个有点晚的答案,我不知道@Jay是否解决了这个问题,但对于任何有同样问题的人,下面是我如何解决的。

    菜单页面

    function my_admin_menu() {
    
        add_menu_page(
            \'Page title\',
            \'Menu title\',
            \'manage_options\',
            \'my_page\',
            null,
            null,
            99
        ); 
    
        add_submenu_page(
            \'my_page\',
            \'Subpage 1 title\',
            \'Subpage 1 menu title\',
            \'manage_options\',
            \'my_subpage_1\',
            null
        );
    
        add_submenu_page(
            \'my_page\',
            \'Subpage 2 title\',
            \'Subpage 2 menu title\',
            \'manage_options\',
            \'my_subpage_2\',
            null
        );
    }
    add_action( \'admin_menu\', \'my_admin_menu\' ) );
    
    function my_admin_head() {
    
        remove_submenu_page( \'my_page\', \'my_subpage_1\' );
    }
    add_action( \'admin_head\', \'my_admin_head\' );
    
    参见法典remove_submenu_page.

    结束

    相关推荐

    Order Admin sub-menu items?

    我正在使用向CPT管理菜单添加项目add_submenu_page 这很好,但它们被添加到CPT选项后的子菜单底部。我希望能够将它们放在最上面,但我想这个问题也可以应用于订购所有基于管理员的子菜单项。我所尝试的(不起作用,我尝试了几种变体),function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( \'edi