WordPress建站过程中对于我们部分用户来说WordPress的后台功能要屏蔽或者减去的功能也挺多的,一来是加快我们WordPress后台访问速度二来呢在整体使用上感觉上也简洁了不少,那么今天咱们要学的是WordPress后台自定义菜单功能,这个后台WordPress自定义菜单功能添加后我们的后台菜单就会自定义化展现我们要的菜单。

WordPress后台自定义菜单

功能函数类要把代码放入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(strpos($value[0], '<') === FALSE) {
      if(in_array($value[0] != NULL ? $value[0]:"" , $restricted)){
        unset($menu[key($menu)]);
      }
    }
    else {
      $value2 = explode('<', $value[0]);
      if(in_array($value2[0] != NULL ? $value2[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()来判断用户权限。
最后推荐一个使用超简单的WordPress后台自定义菜单插件,不需要任何编码,只需拖拖鼠标就可以实现上面所说的大部分功能。插件名称是:Admin Menu Edito