问题描述
我需要为我的用户定制管理面板。那么如何删除整个管理菜单?不删除菜单项,我的意思是完全删除左侧的垂直菜单栏,包括菜单的设计 (例如,css,background..etc) 。我想要变成空白
我可以通过 css hack 来做到这一点。但是我更喜欢使用 hook 来做到这一点。有任何想法吗?
谢谢
最佳解决方案
使用正确的钩子是 admin_menu
,然后创建一个功能来删除要删除的菜单。以下 2 个功能删除所有菜单。
add_action( 'admin_menu', 'remove_admin_menus' );
add_action( 'admin_menu', 'remove_admin_submenus' );
//Remove top level admin menus
function remove_admin_menus() {
remove_menu_page( 'edit-comments.php' );
remove_menu_page( 'link-manager.php' );
remove_menu_page( 'tools.php' );
remove_menu_page( 'plugins.php' );
remove_menu_page( 'users.php' );
remove_menu_page( 'options-general.php' );
remove_menu_page( 'upload.php' );
remove_menu_page( 'edit.php' );
remove_menu_page( 'edit.php?post_type=page' );
remove_menu_page( 'themes.php' );
}
//Remove sub level admin menus
function remove_admin_submenus() {
remove_submenu_page( 'themes.php', 'theme-editor.php' );
remove_submenu_page( 'themes.php', 'themes.php' );
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=category' );
remove_submenu_page( 'edit.php', 'post-new.php' );
remove_submenu_page( 'themes.php', 'nav-menus.php' );
remove_submenu_page( 'themes.php', 'widgets.php' );
remove_submenu_page( 'themes.php', 'theme-editor.php' );
remove_submenu_page( 'plugins.php', 'plugin-editor.php' );
remove_submenu_page( 'plugins.php', 'plugin-install.php' );
remove_submenu_page( 'users.php', 'users.php' );
remove_submenu_page( 'users.php', 'user-new.php' );
remove_submenu_page( 'upload.php', 'media-new.php' );
remove_submenu_page( 'options-general.php', 'options-writing.php' );
remove_submenu_page( 'options-general.php', 'options-discussion.php' );
remove_submenu_page( 'options-general.php', 'options-reading.php' );
remove_submenu_page( 'options-general.php', 'options-discussion.php' );
remove_submenu_page( 'options-general.php', 'options-media.php' );
remove_submenu_page( 'options-general.php', 'options-privacy.php' );
remove_submenu_page( 'options-general.php', 'options-permalinks.php' );
remove_submenu_page( 'index.php', 'update-core.php' );
}
使用上述 2 功能的左侧菜单的屏幕截图:
次佳解决方案
继/wp-admin/admin-header.php
– > /wp-admin/menu-header.php
没有钩子去做。
一个解决方案是钩在 admin_head
并做一些 CSS + jQuery
add_action('admin_head', 'wpse_52099_script_enqueuer');
function wpse_52099_script_enqueuer(){
if(!current_user_can('administrator')) {
echo <<<HTML
<style type="text/css">
#wpcontent, #footer { margin-left: 0px; }
</style>
<script type="text/javascript">
jQuery(document).ready( function($) {
$('#adminmenuback, #adminmenuwrap').remove();
});
</script>
HTML;
}
}
[更新] 根据对问题的澄清,在哪里明确表示动机是管理区域的品牌,这些是我使用的 4 个插件:
-
Adminimize(隐藏大块 WordPress 界面,按角色过滤)
-
Ozh’ Admin Drop Down Menu(所有管理菜单在水平 CSS 驱动下拉菜单中)
-
Admin Menus Fixed(Ozh 的完美伴侣)
-
Admin Tweaks(我是这个的作者,它的主要目的是定制许多领域的管理界面)
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。