WordPress 的後台説簡單也簡單,説複雜也複雜。。。為了方便,我們可以想辦法通過技術手段來對後台的左側欄進行刪除或隱藏,自然是也可以根據不同的用户角色來定義後台側欄菜單的刪減,那麼下面就直接説核心教程了!
- 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 = 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();
- 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,就可以編輯後台的菜單了,還可以添加外鏈菜單,可以調整菜單順序等等,剩下的你自己體驗吧!