如何在没有插件的情况下以编程方式删除 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 管理项目。