WordPress

WordPress 删除后台菜单

LensNews

WordPress给不同角色的用户定义了不同功能的使用权限,所以不同角色的用户后台所看到侧边栏菜单项都是不一样的。这个时候需求又来了,有些时候即使是管理员,部分菜单也是用不到了,例如用WordPress来建一个企业介绍性的网站,该站点根本没有添加评论功能,那么侧边栏的评论菜单是用不着的,如果让企业用户看到,他们会感到很迷惑。所以最好的办法是,根据实际情况,把不该有的侧边栏管理菜单删掉。

自定义后台的侧边栏顶级菜单

  • 具体实现办法是在当前主题的functions.php中添加以下代码:

  1. function remove_menus() {   
  2. global $menu;   
  3. $restricted = array(__('Dashboard'), __('Posts'), __('Media'), __('Links'), __('Pages'), __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Comments'), __('Plugins'));   
  4. end ($menu);   
  5. while (prev($menu)){   
  6. $value = explode(' ',$menu[key($menu)][0]);   
  7. if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}   
  8. }   
  9. }   
  10.   
  11. if ( is_admin() ) {   
  12. // 删除左侧菜单   
  13. add_action('admin_menu', 'remove_menus');   
  14. }  

以上代码核心部分是一个函数remove_menus(),然后通过WordPress的动作接口函数add_action来执行remove_menus函数。在remove_menus函数中,通过$restricted数组来定义需要删除哪些菜单项,以上$restricted数组提供了全部菜单项,也就是说如果你全部将以上代码不做修改地复制到functions.php,那你的WordPress后台就没有任何菜单了,你应该根据实际需要去除菜单。

下面讲讲$restricted各个数组项对应的菜单:

  • __('Dashboard') : 控制板菜单
  • __('Posts') : 文章
  • __('Media') : 媒体
  • __('Links') : 链接
  • __('Pages') : 页面
  • __('Comments') : 评论
  • __('Appearance') : 外观
  • __('Plugins') : 插件
  • __('Users') : 用户
  • __('Tools') : 工具
  • __('Settings') : 设置


例如你只想去除评论和工具菜单,你只需改写以上代码第3行的$restricted数组:

  1. $restricted = array(__('Comments'), __('Tools'));  

[filebox]删除不必要的子菜单[/filebox]WordPress后台的顶级菜单下面还有子菜单,当然有些子菜单是用不到的,我们也可以将其删除,WordPress 3.1以后的版本只需用到一个函数remove_submenu_page( $menu_slug, $submenu_slug ),这里有两个参数,$menu_slug是子菜单所在顶级菜单的缩略名,$submenu_slug为子菜单的缩略名,那如何获得这两个缩略名呢?例如,点击顶级菜单设置,链接地址类似:http://example/wp-admin/options-general.php

那么顶级菜单设置的缩略名为options-general.php,也就是去除http://example/wp-admin/后剩下的东西,依次类推;接着点击顶级菜单设置下面的子菜单隐私,会打开以下网址:http://example/wp-admin/options-privacy.php

那么子菜单隐私的缩略名为options-privacy.php,好了,就这么简单,下面是实现代码,:

  1. function remove_submenu() {   
  2. // 删除"设置"下面的子菜单"隐私"   
  3. remove_submenu_page( 'options-general.php', 'options-privacy.php' );   
  4.   
  5. // 删除"外观"下面的子菜单"编辑"   
  6. remove_submenu_page( 'themes.php', 'theme-editor.php' );   
  7. }   
  8.   
  9. if ( is_admin() ) {   
  10. add_action('admin_init','remove_submenu');   
  11. }  

根据用户角色去除菜单

  • 如果你想按用户角色来去除相应的侧边栏菜单,那就再做一下用户等级的判断就可以了,给第11行的add_action添加判断,改写成:

  1. function remove_menus() {   
  2. global $menu;   
  3.   
  4. // 这里$restricted设置了评论和工具菜单   
  5. $restricted = array(__('Comments'), __('Tools'));   
  6. end ($menu);   
  7. while (prev($menu)){   
  8. $value = explode(' ',$menu[key($menu)][0]);   
  9. if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}   
  10. }   
  11. }   
  12.   
  13. function remove_submenu() {   
  14. remove_submenu_page( 'options-general.php', 'options-privacy.php' );   
  15. }   
  16.   
  17. global $current_user;   
  18. get_currentuserinfo();   
  19.   
  20. //如果当前用户的等级小于3,那么就删除对应的菜单   
  21. if ($current_user->user_level < 3 && is_admin()) {   
  22. add_action('admin_menu', 'remove_menus');   
  23. add_action('admin_init','remove_submenu');   
  24. }  

在WordPress后台 – 用户那里,管理员可以查看 / 编辑用户的角色,以下是用户角色和其等级的对应关系:

  • 0 级对应 订阅者
  • 1 级对应 投稿者
  • 2 – 4 级对应 作者
  • 5 – 7 级对应 编辑
  • 8 – 10 级对应 管理员


WordPress 3.0 之后将逐渐弃用用户数字等级,推荐使用户权限,可以用函数current_user_can()来判断用户权限。

使用超简单的插件
Admin Menu Editor
Admin-Menu-Editor
Admin Menu Editor是一款使用超简单的插件,不需要任何编码,只需拖拖鼠标就可以实现上面所说的大部分功能。插件启用后到设置 – Menu Editor,就可以编辑后台的菜单了,还可以添加外链菜单,可以调整菜单顺序等等,剩下的你自己体验吧!
Admin Menu Editor插件可以设置菜单显示的权限,删除菜单(评论)似乎有点问题,不行就用代码了!

(1)

本文由 远方的雪山 作者:萨龙龙 发表,转载请注明来源!

LensNews

热评文章

发表评论

评论: 4 条评论,访客:2 条,博主:2 条

  • 亮说
    亮说 发布于:  回复

    感脚咱们需求都一样啊~给客户做完模版还要把后台改一下~让客户以为你是单独为他做了一套网站系统~嗯,有这样牛逼的插件就好了,把后台各种wp的痕迹都去掉……
    1、关闭更新提示;
    2、更换后台图标;
    3、更改后台外观;
    登录路径一起改掉就更好了~

    • 萨龙龙
      萨龙龙 发布于:  回复

      最完美的还是让客户知道我们是用WP开发的,这样省去好多麻烦。

  • 明月登楼
    明月登楼 发布于:  回复

    不错,这个有用,有些主题确实是需要去掉这个后台菜单的!

    • 萨龙龙
      萨龙龙 发布于:  回复

      明月兄弟浏览的很及时啊!