删除由第三方插件添加的管理页面。本例中的重力形式

时间:2012-04-07 作者:Andrew

我正试图对编辑器隐藏一个帮助页,由gravity forms 插件。我相信我以前在使用其他插件时也遇到过同样的问题,所以我想知道第三方插件的正确方法。到目前为止,这是我所拥有的不起作用的东西。它当然适用于其他WP菜单,所以我想知道该功能是否仅限于WP菜单?

function remove_menu_links() {
  if( !current_user_can(\'manage_options\') ) {
    remove_menu_page(\'admin.php?page=gf_help\'); // this is the pages url
  }
}
add_action( \'admin_menu\', \'remove_menu_links\');

6 个回复
最合适的回答,由SO网友:brasofilo 整理而成

好吧,Eugene的答案适用于不处理自定义功能的插件。

<支持>http://codex.wordpress.org/Roles_and_CapabilitiesWordPress Plugin API 允许添加、删除和更改角色和功能。由于插件可能会改变角色和功能,因此本文只讨论默认插件。

因此,如果他的代码在没有检查功能的情况下工作,我们必须看看GravityForms是如何执行他的add_submenu_page 行动
为此,我们将整个插件文件夹放在一个好的代码编辑器(NotePad++、TextMate等)中,然后进行全局搜索并找到我们的东西。

// wp-content/plugins/gravityforms/gravityforms.php
// all parameters removed from the original code, except $page_title and $capability
add_submenu_page( 
    $parent_slug, 
    __("Help", "gravityforms"),
    $menu_title,
    $has_full_access ? "gform_full_access" : $min_cap, 
    $menu_slug, 
    $function 
);
在我们看到之前还有几行:

$has_full_access = current_user_can("gform_full_access");
$min_cap = GFCommon::current_user_can_which(GFCommon::all_caps());
if(empty($min_cap))
    $min_cap = "gform_full_access";
现在我们继续Members 插件,顺便说一句GF可以识别,在编辑器角色的配置屏幕中,我们有以下内容
BUT NOTING THAT gform_full_access 不显示在此列表中。它必须通过插件界面手动添加。。。

enter image description here

之后,标记完全访问能力remove_submenu_page 按编辑器角色的预期工作。

所有子菜单的参考代码(记住第一个是最上面的菜单)。

function remove_menu_links() {
    if( !current_user_can( \'manage_options\' ) ) {
        // remove_submenu_page( \'gf_edit_forms\', \'gf_edit_forms\' ); 
        // remove_submenu_page( \'gf_edit_forms\', \'gf_new_form\' ); 
        // remove_submenu_page( \'gf_edit_forms\', \'gf_new_formf_help\' ); 
        // remove_submenu_page( \'gf_edit_forms\', \'gf_entries\' ); 
        // remove_submenu_page( \'gf_edit_forms\', \'gf_settings\' ); 
        // remove_submenu_page( \'gf_edit_forms\', \'gf_export\' ); 
        // remove_submenu_page( \'gf_edit_forms\', \'gf_update\' ); 
        // remove_submenu_page( \'gf_edit_forms\', \'gf_addons\' ); 
        remove_submenu_page( \'gf_edit_forms\', \'gf_help\' ); 
    }
}
add_action( \'admin_menu\', \'remove_menu_links\', 9999 );
感兴趣的插件Adminimize 这是一种在眨眼之间隐藏魔法的方法,完全是专业的。

SO网友:Eugene Manuilov

您需要在队列末尾添加挂钩,然后按slug删除菜单:

function remove_menu_links() {
    if( !current_user_can( \'manage_options\' ) ) {
        remove_menu_page( \'gf_edit_forms\' ); // this is the pages url
    }
}
add_action( \'admin_menu\', \'remove_menu_links\', 9999 );
如果要删除子菜单,需要使用以下代码段:

function remove_menu_links() {
    if( !current_user_can( \'manage_options\' ) ) {
        remove_submenu_page( \'gf_edit_forms\', \'gf_help\' ); 
    }
}
add_action( \'admin_menu\', \'remove_menu_links\', 9999 );

SO网友:D-B

GravityForms插件重命名顶级菜单项以匹配子菜单的第一个。

例如如果只向编辑器角色添加了gravityforms\\u view\\u entries功能,那么第一个子菜单项将是“entries”,因此父菜单将是“gf\\u entries”,而不是“gf\\u edit\\u forms”。因此,以下代码将从具有该功能的编辑器的子菜单中删除“Help”项:

function remove_menu_links() {
    remove_submenu_page( \'gf_entries\', \'gf_help\' );
}
add_action( \'admin_menu\', \'remove_menu_links\', 9999 )
;
希望这有帮助。

SO网友:user14386

这让我发疯。这里提供的答案让我了解了大部分情况,但那个该死的重力表单菜单项有点奇怪。

我通过分析包含所有菜单数据的$子菜单全局变量,找到了它的根源。当连接到上面列出的admin\\u menu()时,以下代码段应该为您终止更新子菜单项:)

remove_submenu_page( \'gf_edit_forms\', \'gf_update\' ); 

SO网友:Manny Rodrigues

上面没有什么对我有用,但至少我可以用CSS隐藏它。

#toplevel\\u page\\u gf\\u帮助{显示:无;}

SO网友:Amine Beloud

如果需要,您可以使用css隐藏它,请在管理面板上搜索插件以添加css:

a[href="admin.php?page=gf_help"] {
    display: none !important;
}

结束

相关推荐

Plugins_url()错误地返回带有www子域的URL

我正在开发一个插件,为了回答这个问题,我们称之为“我的插件”。我的插件目录如下所示:my-plugin/ |- image.jpg |- script.js |- script.php |- plugin.php |- ajax.php 在脚本中。php我有一段代码指定了一些JS。在其中,我需要一个ajax的URL。php。e、 g.:<script type=\"text/javascript\"> foo = jQuer