自定义WordPress后台管理侧栏菜单

现在大家都在使用WordPress给客户设计网站,其完美的代码构架让我们已经无法不去使用她,但设计好的网站后台肯定有许多我们用不到的管理菜单,这里就需要我们对WordPress后台管理菜单进行自定义,既做到去除WP的信息,也方便客户操作使用。下面介绍一下如何删除WP后台不用的菜单。

在functions.php文件中添加以下代码:

function remove_menus() {
global $menu;
$restricted = array(__(‘Dashboard’), __(‘Posts’), __(‘Media’), __(‘Links’), __(‘Pages’), __(‘Appearance’), __(‘Tools’), __(‘Users’), __(‘Settings’), __(‘Comments’), __(‘Plugins’));
end ($menu);
while (prev($menu)){
$value = explode(‘ ‘,$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:”” , $restricted)){unset($menu[key($menu)]);}
}
}

if ( is_admin() ) {
// 删除左侧菜单
add_action(‘admin_menu’, ‘remove_menus’);
}

自定义要去除的顶级菜单

以上代码核心部分是一个函数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数组:

$restricted = array(__(‘Comments’), __(‘Tools’));

删除不必要的子菜单

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,好了,就这么简单,下面是实现代码:

function remove_submenu() {
// 删除”设置”下面的子菜单”隐私”
remove_submenu_page( ‘options-general.php’, ‘options-privacy.php’ );
// 删除”外观”下面的子菜单”编辑”
remove_submenu_page( ‘themes.php’, ‘theme-editor.php’ );
}
if ( is_admin() ) {
add_action(‘admin_init’,’remove_submenu’);
}

根据用户角色去除菜单

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

function remove_menus() {
global $menu;

// 这里$restricted设置了评论和工具菜单
$restricted = array(__(‘Comments’), __(‘Tools’));
end ($menu);
while (prev($menu)){
$value = explode(‘ ‘,$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:”” , $restricted)){unset($menu[key($menu)]);}
}
}

function remove_submenu() {
remove_submenu_page( ‘options-general.php’, ‘options-privacy.php’ );
}

global $current_user;
get_currentuserinfo();

//如果当前用户的等级小于3,那么就删除对应的菜单
if ($current_user->user_level < 3 && is_admin()) {
add_action(‘admin_menu’, ‘remove_menus’);
add_action(‘admin_init’,’remove_submenu’);
}

     在WordPress后台 – 用户那里,管理员可以查看 / 编辑用户的角色,以下是用户角色和其等级的对应关系:
  • 0 级对应 订阅者
  • 1 级对应 投稿者
  • 2 – 4 级对应 作者
  • 5 – 7 级对应 编辑
  • 8 – 10 级对应 管理员

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

使用插件实现

如果不想做码农,直接使用插件也可以完成自定义后台菜单的任务,推荐插件:Admin Menu Editor,可以点此前往WordPress官方下载,启用后到设置 – Menu Editor,就可以编辑后台的菜单了,还可以添加外链菜单,可以调整菜单顺序等等!

落花生

认准了方向,就要勇敢地走下去,十年磨一剑,我相信,只要坚持,一切都有可能。

相关日志

  1. 没有图片

    2010.05.22

    UCenter info: MySQL Query Error 解决办法之一

    康盛创想的软件越来越庞大,所以出现问题也是正…

  2. Google AutoDraw

    2017.04.21

    Google 推出绘画黑科技 AutoDraw 灵魂画师快来迎接救星

    今晚尝试了一下Google的新产品 Auto…

  3. 没有图片

    2012.04.07

    MySQL新建/授权/修改/删除用户教程

    一般情况下,修改MySQL密码,授权,是需要…

  4. 没有图片

    2009.08.26

    UCenter Home 2.0 正式版 道具使用说明

    UCenter Home 2.0 正式版 发…

  5. 没有图片

    2011.12.13

    Gmail即将推出新外观

    Google一直在为我们提供着强大的服务,G…

  6. 没有图片

    2012.06.15

    简短而实用的WordPress随机日志调用代码

    此段调用代码可以用来制作碰碰运气,也可以用来…

评论

  1. 哈秀时尚 2013.08.16 4:05下午

    很好的一个博客,我很喜欢

  2. 网赚博客 2013.05.17 3:21下午

    这个办法不错

  3. 皇家元林 2013.05.13 9:37下午

    WordPress就是强大!

  4. 企业文化标语 2013.05.10 2:54下午

    喜欢博客的风格

  5. 老外 2013.05.09 2:20下午

    我准备购买这个主题,但是我看了你这个站 发现变形了啊、、在chrome全屏下 首页幻灯片有有空白,评论这里也是变了、、在昵称 邮箱那里、、

    • 落花生 2013.08.26 1:42上午

      几乎不可能出现你所说的问题,是哪款主题?

About

马拉松运动员,沉迷于跑步;关注科技前沿,关注互联网!与跑者、程序员、设计师为伍,一起跑步健身,一起编写程序,为自由而战!