0%

正威網路行銷工作室,專注於基隆、台北與全台客製化網頁設計,提供專業 RWD 響應式、SEO 搜尋引擎優化、品牌形象設計與網站維護託管服務。

搜尋文章
聯絡資訊
地址基隆市仁二路 220 號 5 樓
追蹤我們

WordPress 後台隱藏選單與外掛:精簡客戶看到的後台畫面

隱藏wordpress後台部分外掛的代碼!

網站做好交給客戶或同事使用時,後台一長串選單(工具、外掛、各種外掛的設定頁)常常讓人不知道從哪裡下手,也容易誤按、改壞設定。把用不到的選單藏起來,後台會清爽很多。

先知道:隱藏選單不等於限制權限

用程式碼隱藏選單,只是選單上看不到,知道網址的人直接輸入(例如 /wp-admin/tools.php)還是打得開。

所以先分清楚你的需求是哪一種:

  • 只是讓畫面清爽、避免誤按:用這篇的程式碼。
  • 真的不讓對方改某些東西:用 WordPress 的角色權限。例如給客戶「編輯」角色而不是「網站管理員」,外掛、佈景主題、設定這些選單本來就不會出現,直接輸入網址也打不開。

「編輯」角色預設不能修改選單與小工具,客戶需要的話,可以用 User Role Editor、Members 這類角色管理外掛,替角色加上需要的權限。角色的完整說明請看WordPress 角色和權限終極指南。

程式碼要放在哪裡?

下面的程式碼加在子主題的 functions.php,或用 Code Snippets 外掛新增一段程式碼。不要直接改佈景主題本身的檔案,主題更新時會被覆蓋。

隱藏後台左側選單

PHP
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' ); 就可以。

只對特定帳號隱藏

上面的寫法會連你自己的選單一起藏起來,要用的時候很不方便。比較常見的做法是:開發者(你自己)的帳號看得到全部,其他人看到精簡版。

PHP
/**
 * 判斷目前登入的是不是開發者帳號
 * 把 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' ) ),網站管理員看得到全部,其他角色看到精簡版。

從「已安裝外掛」清單隱藏特定外掛

這是舊版文章標題想做的事:讓特定外掛不出現在「外掛 → 已安裝外掛」的清單裡,避免被誤停用或刪除。

PHP
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 資料夾裡實際有哪些外掛。

隱藏上方工具列的項目

後台與前台上方的工具列,也可以拿掉用不到的項目:

PHP
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!」那一行的上面),就會關閉這兩個編輯器:

PHP
define( 'DISALLOW_FILE_EDIT', true );

延伸閱讀

後台整理得乾淨、權限分得清楚,交出去的網站才好管理。正威網路行銷是 25 年經驗的基隆網頁設計工作室,服務基隆、台北與全台客戶,網站做好之後也提供維護託管,歡迎來聊聊。

分享這篇文章

返回文章列表更多「Wordpress代碼教學」文章

發表留言

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

讓我們一起打造
您的專屬網站!