
網站做好交給客戶或同事使用時,後台一長串選單(工具、外掛、各種外掛的設定頁)常常讓人不知道從哪裡下手,也容易誤按、改壞設定。把用不到的選單藏起來,後台會清爽很多。
先知道:隱藏選單不等於限制權限
用程式碼隱藏選單,只是選單上看不到,知道網址的人直接輸入(例如 /wp-admin/tools.php)還是打得開。
所以先分清楚你的需求是哪一種:
- 只是讓畫面清爽、避免誤按:用這篇的程式碼。
- 真的不讓對方改某些東西:用 WordPress 的角色權限。例如給客戶「編輯」角色而不是「網站管理員」,外掛、佈景主題、設定這些選單本來就不會出現,直接輸入網址也打不開。
「編輯」角色預設不能修改選單與小工具,客戶需要的話,可以用 User Role Editor、Members 這類角色管理外掛,替角色加上需要的權限。角色的完整說明請看WordPress 角色和權限終極指南。
程式碼要放在哪裡?
下面的程式碼加在子主題的 functions.php,或用 Code Snippets 外掛新增一段程式碼。不要直接改佈景主題本身的檔案,主題更新時會被覆蓋。
隱藏後台左側選單
add_action( 'admin_menu', function () {
remove_menu_page( 'edit-comments.php' ); // 留言
remove_menu_page( 'tools.php' ); // 工具
remove_submenu_page( 'index.php', 'update-core.php' ); // 控制台 → 更新
}, 999 );- 掛在
admin_menu:這是 WordPress 建立後台選單的時機,官方建議隱藏選單也在這裡處理。舊版文章掛在admin_head,不是為這件事設計的 hook。 - 優先順序設成
999:讓這段在所有外掛建立完選單之後才執行,外掛的選單才藏得掉。 remove_menu_page()刪除第一層選單;remove_submenu_page()刪除子選單,第一個參數是上層選單的代號,第二個是子選單的代號。
常用選單的代號
- 控制台:
index.php - 文章:
edit.php - 媒體:
upload.php - 頁面:
edit.php?post_type=page - 留言:
edit-comments.php - 外觀:
themes.php - 外掛:
plugins.php - 使用者:
users.php - 工具:
tools.php - 設定:
options-general.php
外掛的選單代號怎麼找?
在後台點開那個外掛的選單,看瀏覽器網址列:
- 網址是
.../wp-admin/admin.php?page=wpcf7:代號是page=後面那一段,也就是wpcf7(這是 Contact Form 7 的例子)。 - 網址是
.../wp-admin/edit.php?post_type=product:代號是整段edit.php?post_type=product(這是 WooCommerce 商品的例子)。
找到之後寫成 remove_menu_page( 'wpcf7' ); 就可以。
只對特定帳號隱藏
上面的寫法會連你自己的選單一起藏起來,要用的時候很不方便。比較常見的做法是:開發者(你自己)的帳號看得到全部,其他人看到精簡版。
/**
* 判斷目前登入的是不是開發者帳號
* 把 your-login 改成你自己的使用者名稱
*/
function ahwei_is_developer() {
return 'your-login' === wp_get_current_user()->user_login;
}
add_action( 'admin_menu', function () {
if ( ahwei_is_developer() ) {
return;
}
remove_menu_page( 'tools.php' );
remove_menu_page( 'wpcf7' );
remove_submenu_page( 'index.php', 'update-core.php' );
}, 999 );如果客戶用的是「編輯」等非管理員角色,也可以改成用權限判斷:把 if ( ahwei_is_developer() ) 換成 if ( current_user_can( 'manage_options' ) ),網站管理員看得到全部,其他角色看到精簡版。
從「已安裝外掛」清單隱藏特定外掛
這是舊版文章標題想做的事:讓特定外掛不出現在「外掛 → 已安裝外掛」的清單裡,避免被誤停用或刪除。
add_filter( 'all_plugins', function ( $plugins ) {
if ( ahwei_is_developer() ) {
return $plugins;
}
unset( $plugins['contact-form-7/wp-contact-form-7.php'] );
return $plugins;
} );這段用到上一節的 ahwei_is_developer(),兩段要一起加。陣列的鍵是「外掛資料夾/主程式檔名」。不知道怎麼寫的話,在外掛清單把滑鼠移到該外掛的「停用」連結上,網址裡 plugin= 後面那一段就是(%2F 代表 /)。
注意事項:
- 外掛只是在清單上看不到,功能照常運作。它有新版本時,可能還是會出現在「控制台 → 更新」頁面。
- 網站是客戶的,建議事先說明你隱藏了哪些外掛、原因是什麼。
- 反過來說,惡意程式也常用這招把自己藏起來。如果你是網站擁有者,發現網站行為怪怪的、外掛清單卻看起來正常,可以用 FTP 直接看
wp-content/plugins資料夾裡實際有哪些外掛。
隱藏上方工具列的項目
後台與前台上方的工具列,也可以拿掉用不到的項目:
add_action( 'admin_bar_menu', function ( $wp_admin_bar ) {
$wp_admin_bar->remove_node( 'wp-logo' ); // 左上角的 WordPress 標誌
$wp_admin_bar->remove_node( 'comments' ); // 留言
}, 999 );想整條工具列都不要顯示,請看WordPress 隱藏上方工具列。
順便:關閉後台的檔案編輯器
「外觀」與「外掛」選單底下,各有一個可以直接修改程式碼的檔案編輯器。改錯一個字網站就可能當機,帳號被盜時也常被拿來植入惡意程式。在網站根目錄的 wp-config.php 加上這一行(放在「That's all, stop editing!」那一行的上面),就會關閉這兩個編輯器:
define( 'DISALLOW_FILE_EDIT', true );延伸閱讀
- WordPress 使用者角色與權限完整指南:預設角色、檢查權限、建立自訂角色
- WordPress 禁止非管理員進入後台:訂閱者、會員登入後自動導回首頁
- WordPress functions.php 實用程式碼整理:10 個常用又安全的小技巧
後台整理得乾淨、權限分得清楚,交出去的網站才好管理。正威網路行銷是 25 年經驗的基隆網頁設計工作室,服務基隆、台北與全台客戶,網站做好之後也提供維護託管,歡迎來聊聊。







發表留言
還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。