【问题标题】:Remove tools.php page from WordPress admin从 WordPress 管理员中删除 tools.php 页面
【发布时间】:2012-04-19 09:33:19
【问题描述】:

背景

WordPress 管理部分 (/wp-admin) 包含一个名为工具的菜单项(在用户和设置之间)。它有一个名为“Available Tools”的突出子项,该页面包含一个名为“Press This”的功能。

/wp-admin/tools.php

我的问题

如何从工具部分删除此页面?

我尝试过的

我尝试了一个删除菜单项的功能:

    add_action( 'admin_menu', 'my_remove_menu_pages' );
function my_remove_menu_pages() {
    remove_menu_page('press-this.php');
    //remove_menu_page('tools.php');
}

如果我删除 tools.php,整个工具部分将被删除,而不仅仅是“可用工具”部分。

我也试过从目录中删除 press-this.php。

这两种方法都无济于事。

我在网上任何地方都找不到解决方案。任何帮助将不胜感激。

【问题讨论】:

    标签: wordpress admin


    【解决方案1】:

    这种方式使用 WP 功能:
    测试和工作

    add_action( 'admin_menu', 'remove_tools' );
    function remove_tools() {
        remove_submenu_page('tools.php', 'tools.php');
    }
    

    【讨论】:

    • 已实施并理解,谢谢。 @soju 感谢您的客观性。
    【解决方案2】:

    你可以使用admin_menu钩子修改$submenu全局变量:

    add_action('admin_menu','modify_menu');
    
    function modify_menu()
    {
      global $submenu;
      unset($submenu['tools.php'][5]);
    }
    

    编辑:正如 janw 在他的回答中所说,您应该改用 remove_submenu_page

    【讨论】:

    • 这非常有效。谢谢你。我无法在网上或 WordPress 法典中找到类似的示例(我使用多个术语进行了搜索)。我在哪里可以了解有关您提供的示例的更多信息?我想了解全局 $submenu 变量以及 unset 函数中数字 5 的意义。任何知情人士的链接就足够了。
    • 数字5可能是item menu的权重。我的谷歌搜索这个问题:“wordpress 删除子级管理菜单”,第一个结果:erisds.co.uk/wordpress/…
    • 该链接非常有用,您的关键字搜索也是如此。我原来的关键字是“(删除或删除或禁用)AND(tools.php OR Press This OR Press It OR Available Tools)”。
    【解决方案3】:

    试试这个代码。如果用户没有可用的其他工具,它会隐藏整个工具菜单。

    add_action('admin_init', 'remove_tools_admin_menu');
        function remove_tools_admin_menu() {
            global $submenu;
            unset($submenu['tools.php'][5]);
            if(count($submenu['tools.php']) == 0) {
                remove_menu_page('tools.php');
            }
    }
    

    【讨论】:

    • 我认为 'admin_menu' 是比 'admin_init' 更适合使用的操作,但除此之外效果很好,谢谢。