如何删除管理员中某些级别用户的整个左侧导航栏?

时间:2015-09-28 作者:Don Rhummy

我知道如何从左侧导航栏中删除项目(挂钩admin_menu 然后做global $menu; unset( $menu[ __( "Posts" ) ] ); 例如)。但它仍然显示一个左侧导航栏(上面没有任何内容)。我要把左边的导航条都去掉。

我试过这个,但不起作用:

//This doesn\'t work (in any hook, or plugin constructor)
show_admin_bar(false);

//This also doesn\'t work
add_filter(\'show_admin_bar\', \'__return_false\');
实现这一点的挂钩/功能是什么?

2 个回复
SO网友:Jan Beck

您可以创造性地使用输出缓存来捕获adminbar,然后像这样丢弃它:

<?php
// this filter runs in menu-header.php L37 right before the admin menu is rendered
add_filter( \'parent_file\', function( $parent_file ){
    ob_start();
    return $parent_file;
} );
// runs after the output
add_action( \'in_admin_header\', function(){
    ob_clean(); // discard output
    echo \'<div id="wpcontent">\'; 
} );
请不要实际考虑在任何生产环境中使用它。它不提供任何安全性,可能会破坏各种东西(例如管理工具栏)。我认为这是对“如何使用PHP输出缓存和WP过滤器来移动和删除内容”这一问题的教育性回答。仅仅使用CSS可能会更好。

SO网友:Nate Allen

如果你看看menu-header.php 中的文件wp-admin 文件夹中,您将看到管理菜单是硬编码的。没有允许您禁用它的挂钩。

另一个问题是#wpcontent div有一个左边距(取决于屏幕大小),因此即使去掉了管理菜单代码,它通常占用的空间仍然存在。