如何改造 WordPress 管理後台主選單
WordPress 的管理後台主選單是用戶管理和導航網站的核心工具。有時,您可能需要隱藏不必要的選單項目或添加自定義的選單,以更好地符合網站的需求。在這節課中,我們將學習如何通過 admin_menu
過濾器來移除和添加後台主選單項目,從而改造 WordPress 管理後台的導航結構。
移除管理後台主選單項目
如果某些選單項目對於您的網站管理來說不必要,或者您希望簡化後台界面,可以通過 remove_menu_page
函數來移除這些項目。
- 操作說明:
- 打開您自定義的外掛 PHP 文件或主題的
functions.php
文件。 - 添加以下代碼來移除特定的主選單項目。
- 打開您自定義的外掛 PHP 文件或主題的
- 範例代碼:
// 移除管理後台主選單項目 function remove_admin_menu_items() { remove_menu_page('tools.php'); // 移除 "工具" 選單 } add_action('admin_menu', 'remove_admin_menu_items');
代碼解釋:
remove_menu_page('tools.php');
:這行代碼通過指定選單的檔案名稱(tools.php
)來移除 “工具” 選單項目。add_action('admin_menu', 'remove_admin_menu_items');
:這行代碼將remove_admin_menu_items
函數綁定到admin_menu
過濾器,以確保在後台選單生成之前執行此操作。
- 常見的管理後台主選單對應的檔案名稱:
- 儀表板:
index.php
- 文章:
edit.php
- 媒體:
upload.php
- 頁面:
edit.php?post_type=page.php
- 留言:
edit-comments.php
- 外觀:
themes.php
- 外掛:
plugins.php
- 使用者:
users.php
- 工具:
tools.php
- 設置:
options-general.php
- 個人資訊:
profile.php
- 儀表板:
添加自定義的管理後台主選單項目
除了移除現有的選單項目,您還可以使用 add_menu_page
函數來添加自定義的主選單。這允許您將自定義的頁面或功能添加到後台主選單中。
- 操作說明:
- 在同一個 PHP 文件中,添加以下代碼來創建自定義的主選單項目。
- 範例代碼:
// 添加自定義的管理後台主選單項目 function add_admin_menu_items() { add_menu_page( '自訂選單標題', // 頁面標題 '自訂選單', // 選單標題 'manage_options', // 必要的能力(capability) 'custom_menu_slug', // 頁面 slug 'custom_menu_page_content',// 用於顯示內容的回調函數 'dashicons-admin-generic', // 圖標(可選) 100 // 位置(可選) ); } add_action('admin_menu', 'add_admin_menu_items'); // 自定義選單頁面的內容 function custom_menu_page_content() { echo '<h1>這是自訂選單的內容</h1>'; }
代碼解釋:
add_menu_page
函數創建一個新的主選單項目。- 參數詳解:
自訂選單標題
:在瀏覽器標籤中顯示的頁面標題。自訂選單
:選單項目在後台顯示的名稱。manage_options
:訪問這個選單所需的能力(僅有管理員可以訪問)。custom_menu_slug
:自定義頁面的 slug,用於 URL。custom_menu_page_content
:當用戶點擊選單項目時,調用的函數來顯示頁面內容。dashicons-admin-generic
:選單項目的圖標(可選)。100
:選單項目的顯示位置(可選)。
- 常見的管理後台主選單對應位置:
- 儀表板:2
- 分隔符:4
- 文章:5
- 媒體:10
- 頁面:20
- 留言:25
- 外觀:60
- 外掛:65
- 使用者:70
- 工具:75
- 設置:80
- 分隔符:99
測試您的改動
完成上述代碼編寫後,請保存文件並登錄到 WordPress 後台以檢查結果。您應該會看到指定的主選單項目已經被移除,並且自定義的選單項目已經顯示在後台主選單中。
擴展練習
- 添加子選單:嘗試使用
add_submenu_page
函數來為自定義的主選單項目添加子選單,以進一步擴展管理後台功能。 - 條件移除選單項目:基於用戶角色或權限,條件性地移除某些選單項目,以提供不同層級的後台訪問控制。