如何在沒有插件的情況下以編程方式刪除 WordPress 管理員菜單項

已發表: 2020-01-20

如何以編程方式刪除 WordPress 管理員菜單項 WordPress 儀表板菜單是繞過管理儀表板不同部分的一種非常有用的方法,但有時它們可能會令人討厭或不受歡迎。 特別是,當您使用 WordPress 作為內容管理系統來創建與博客相反的客戶端網站時,您需要刪除不需要的 WordPress 管理菜單項。

刪除 WordPress 管理菜單項的最簡單方法之一是使用免費提供的插件,這些插件可以按用戶角色或有條件地隱藏管理菜單項。

何時不使用插件刪除 WordPress 管理員菜單項

使用插件刪除 WordPress 管理菜單項的缺點可能是過度依賴第三方插件開發人員來進行一致的更新。

第三方插件風險

在這種情況下,當您想在不使用插件的情況下控制 WordPress 儀表板中顯示的菜單時,本教程是您的最佳指南。

不斷更新

以編程方式刪除 WordPress 管理菜單項的另一個原因是您在安裝的所有 WordPress 插件中不斷更新。

這些更新很重要,因為它們改善了用戶體驗、性能和安全性,但它們可能過於繁瑣,尤其是當您處理大量客戶的網站時。

幾個插件管理菜單

當您的站點上安裝瞭如此多的插件時,大多數插件都帶有管理菜單,您可能希望刪除這些菜單,因為您不會經常使用管理菜單。

在這篇文章中,我將說明如何在不使用插件的情況下刪除 WordPress 菜單項。 為了在您的 WordPress 站點中實現這一點,您需要一些編輯 WordPress 站點的經驗,尤其是在 functions.php 主題文件中添加代碼片段。

以編程方式刪除 WordPress 管理員菜單項

我喜歡從快速總結開始,因為它使讀者更容易在分步指南中尋找快速解決方案。 以下是刪除 WordPress 管理菜單項應採取的步驟。

  1. 登錄到您的 WordPress 網站並確定您要刪除的管理菜單項
  2. 創建一個操作掛鉤,該掛鉤使用回調函數掛鉤 admin_menu 事件,該回調函數具有從儀表板中刪除 WordPress 管理菜單的邏輯。
  3. 回調函數應使用remove_menu_pageremove_submenu_page() WordPress 函數來刪除每個目標管理菜單項。 例如,您可以使用以下代碼從主題菜單中刪除小部件菜單remove_submenu_page( 'themes.php', 'widgets.php'); 或使用此代碼刪除儀表板主菜單 - remove_menu_page('index.php');
  4. 或者,您可以使用unset() php 函數並訪問全局子菜單數組的值以刪除每個目標 WordPress 管理菜單項。
  5. 將此代碼片段添加到主題 functions.php 並更新更改。 這將在不使用插件的情況下成功刪除 WordPress 管理菜單項。
  6. 您還可以將此代碼添加到自定義插件中的函數中,它將像在主題 functions.php 中一樣工作

如何在沒有插件的情況下刪除 WordPress 管理菜單

以下是通過添加代碼而不是使用其他插件來刪除 WordPress 管理菜單項的詳細分步方法。

識別管理菜單項蛞蝓

登錄您的 WordPress 儀表板並檢查您要刪除的管理菜單項。 正如您在此示例中看到的,主儀表板菜單具有 slug index.php

這個 slug 很重要,因為它是您添加到 remove_submenu_page() 函數的參數之一,我將在稍後說明。

刪除 wordpress 管理菜單

了解如何刪除頁面和刪除子菜單頁面功能的工作原理

刪除頁面功能

remove_menu_page 函數只有一個參數,即 page slug,它會刪除頂級管理菜單。 該參數是一個字符串,因為它顯然是一個字符串的page slug,一般代碼應該如下:

 remove_menu_page(string;$menu_slug;)

刪除子頁面功能

remove_submenu_page 函數帶有兩個參數,第一個參數是刪除子菜單時父菜單的 slug,第二個參數是要刪除的子菜單的 slug。 一般代碼應該如下:

 remove_submenu_page(字符串 $menu_slug,字符串 $submenu_slug )

創建操作掛鉤以刪除管理菜單和/或子菜單項

下面是一個鉤子在admin_menu事件上的動作鉤子的例子,它有一個我們命名為“ remove_admin_menu_items”的回調函數

add_action('admin_menu', 'remove_admin_menu_items', 999);

使用 remove_submenu_page 和 remove_menu_page () 創建回調函數以刪除管理菜單和/或子菜單項

首先,在回調函數中,如果要使用unset()函數,則需要使用全局 $submenu 變量獲取全局菜單數組。

其次,添加針對要刪除的頁面的remove_submenu_page或 remove_menu_page () 函數,如下面的代碼所示:

 功能 remove_admin_menu_items() {        

    remove_submenu_page('menu_slug', 'submenu_slug'); 

}

或者使用 unset 你可以有以下回調函數

功能 remove_admin_menu_items() {

        全球$子菜單; 

       unset($submenu['parent menu slug'][admin item submenu array index]);

 }

有關如何刪除更新管理菜單項的示例

當您登錄 WordPress 儀表板時,主儀表板菜單下有一個關於更新的菜單項,如下圖所示:

刪除 wordpress 管理菜單

我將說明如何使用上面討論的方法刪除此管理菜單項。 首先,父菜單 slug 是index.php ,更新菜單的 slug 是update-core.php

刪除 WordPress 管理菜單項父和子菜單

因此,您可以使用 remove_menu_page() 函數創建操作掛鉤和回調函數來刪除整個菜單項,如下所示:

 // 刪除主菜單項和子頁面 /submenus

add_action('admin_menu', 'remove_admin_menu_items', 999);

 功能 remove_admin_menu_items() {

    remove_menu_page('index.php');


 }

這將刪除整個菜單和子菜單,如下圖所示:

僅刪除 WordPress 子菜單項

僅刪除 WordPress 子菜單項

您可以使用remove_submenu_page函數創建操作掛鉤和回調函數以刪除子菜單項,如下所示:

 //刪除子頁面或子菜單

add_action('admin_menu', 'remove_admin_menu_items', 999);

功能 remove_admin_menu_items() {

    remove_submenu_page('index.php','update-core.php');

}

這將刪除 remove_submenu_page 函數的第二個參數中指定的子菜單,在這種情況下,我們指定為“ update-core.php” ,結果如下圖所示:

使用 Unset() PHP 函數

我們也可以使用 PHP 的 unset 函數來移除子菜單項,在這種情況下,我們需要首先訪問全局 $submenu 數組,如下代碼所示:

 //將動作鉤子添加到admin_menu事件

add_action('admin_menu', 'remove_admin_menu_items', 999);

//回調函數
功能 remove_admin_menu_items() {

    //管理菜單數組->所有WordPress管理菜單項的列表都在這個數組中
    全球$子菜單;

    //將數組打印到屏幕上,以便我們可以按索引查看管理菜單項
    
     打印('<pre>');
     print_r($submenu);
     打印('<pre>');

      // 我們刪除屏幕上顯示的所有其他內容,以便只看到管理菜單項數組
      死();

}

此代碼獲取全局子菜單數組,我們打印它以顯示所有菜單的數組,以便我們可以選擇每個管理菜單項的索引,然後根據需要刪除它們。

在這段代碼中,您可以看到使用pre 標籤die()函數以清晰的格式顯示代碼。

使用 Unset() PHP 函數 wordpress

使用取消設置刪除 WordPress 子菜單菜單項

所以update-core 子菜單的數組索引是 10 。 所以我們可以繼續使用unset()函數,如下所示:

 // 使用 unset 刪除主菜單項和子頁面

add_action('admin_menu', 'remove_admin_menu_items', 999);

功能 remove_admin_menu_items() {

    全球$子菜單;

       unset($submenu['index.php'][0]); //刪除頂級菜單 index.php(儀表板菜單 - 主菜單)
      unset($submenu['index.php'][10]); // 刪除子菜單 update-core.php(更新菜單)


}

結果將與使用 remove_submenu_page WordPress 函數相同。

使用取消設置刪除 WordPress 管理菜單項

我們還可以使用針對這些頁面中的每一個的 unset 函數一起刪除頂級頁面和子菜單:

使用取消設置刪除 WordPress 管理菜單項

代碼應如下所示:

 //。 使用 unset 刪除主子菜單項

add_action('admin_menu', 'remove_admin_menu_items', 999);

功能 remove_admin_menu_items() {

   全球$子菜單;

   unset($submenu['index.php'][10]);


}

結果將是刪除我們在代碼中未設置的任何一個頁面:

如何在沒有插件的情況下以編程方式刪除 WordPress 管理菜單項

包起來

在這篇文章中,我們廣泛介紹了可用於刪除 WordPress 管理菜單項和清理 WordPress 儀表板的兩種主要方法。 如果您是 WordPress 開發人員,您可以重用此代碼並輕鬆複製它,查看我的要點,您可以在 GitHub 上關注我以獲取更多未來更新。 我還在這里分享了其他幾個片段——WP-Snippets 。 我希望您現在可以從菜單中刪除那些您不想要的 WordPress 管理項目。