删除由插件创建的菜单项

时间:2013-04-15 作者:John

我正在尝试删除一个菜单项,并尝试了几种方法,但没有任何运气。它是从FAQ插件创建的。

如果我使用这一行:

remove_menu_page( \'edit.php?post_type=question\' );
它将删除主菜单,但是我只想删除其中包含的两个子菜单项edit.php?post_type=question URL地址。

对于要删除的项目,URL栏中的路径提供了以下信息:
edit-tags.php?taxonomy=faq-topic&post_type=question

edit-tags.php?taxonomy=faq-tags&post_type=question

我尝试了几种解决方案,包括remove_menu_pageremove_submenu_page 无济于事。

迄今为止的失败之处:

remove_submenu_page( \'edit.php?post_type=question\', \'edit-tags.php?taxonomy=faq-topic&post_type=question\');
remove_menu_page( \'edit-tags.php?taxonomy=faq-tags\') ;
remove_menu_page( \'edit-tags.php?taxonomy=faq-tags&post_type=question\') ;
remove_submenu_page( \'edit.php?post_type=question\', \'edit-tags.php?taxonomy=faq-topic&post_type=question\');
remove_submenu_page( \'edit.php\', \'edit-tags.php?taxonomy=faq-topic&post_type=question\');
remove_submenu_page( \'edit.php\', \'edit-tags.php?taxonomy=faq-topic\');
remove_submenu_page( \'edit.php\', \'edit-tags.php\');

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

function remove_submenu() {

    remove_submenu_page( \'edit.php\', \'edit-tags.php?taxonomy=faq-topic&post_type=question\' );
    remove_submenu_page( \'edit.php\', \'edit-tags.php?taxonomy=faq-tags&post_type=question\' );
}

add_action( \'admin_menu\', \'remove_submenu\', 999 );
请阅读Codex. remove_submenu_page() 需要两个参数和右挂钩。

very 重要提示:在挂钩中使用非常、非常、非常高的优先级!如果使用低优先级,将在添加菜单之前执行功能。因此没有要删除的菜单。如果使用高优先级,则很有可能执行您的函数after 菜单已添加。

这可能是棘手的部分。

UPDATE

安装并检查插件后,我找到了解决方案。有几个问题和一些棘手的部分。

子菜单包括not 添加了add_submenu_page(), 它们是使用自定义帖子类型添加的。简单的搜索方式add_submenu_page(), 复制菜单段塞和删除菜单必须失败。我必须搜索cpt slug并使用它。

之后global $submenu; var_dump( $submenu ); 我得到这个输出

[more elements]
    \'edit.php?post_type=question\' => 
        array (size=7)
          5 => 
            array (size=3)
              0 => string \'FAQs\' (length=4)
              1 => string \'edit_posts\' (length=10)
              2 => string \'edit.php?post_type=question\' (length=27)
          10 => 
            array (size=3)
              0 => string \'Neue FAQ\' (length=8)
              1 => string \'edit_posts\' (length=10)
              2 => string \'post-new.php?post_type=question\' (length=31)
          15 => 
            array (size=3)
              0 => string \'FAQ Titel\' (length=9)
              1 => string \'manage_categories\' (length=17)
              2 => string \'edit-tags.php?taxonomy=faq-topic&post_type=question\' (length=55)
          16 => 
            array (size=3)
              0 => string \'FAQ Tags\' (length=8)
              1 => string \'manage_categories\' (length=17)
              2 => string \'edit-tags.php?taxonomy=faq-tags&post_type=question\' (length=54)
[ more elements ]
现在,使用edit.php?post_type=question 作为菜单段塞和edit-tags.php?taxonomy=faq-topic&post_type=question / edit-tags.php?taxonomy=faq-tags&post_type=question 作为子菜单段塞。

如果仔细观察,则会显示与(&;)是html实体。仅复制url部分并插入它是不可能的。因此,您不能删除带有未编码url的子菜单页,它必须是url编码的。

这是最后的代码:

add_action( \'admin_menu\', \'remove_faq_subpages\', 999 );

function remove_faq_subpages() {

    $ptype = \'question\';
    remove_submenu_page( "edit.php?post_type={$ptype}", "edit-tags.php?taxonomy=faq-tags&post_type={$ptype}" );
    remove_submenu_page( "edit.php?post_type={$ptype}", "edit-tags.php?taxonomy=faq-topics&post_type={$ptype}" );

}

SO网友:Ostap Brehin

使菜单项仅对管理员可见:

function hide_admin_menu()
{
    if ( !current_user_can(\'administrator\')) {
        remove_menu_page(\'wpca\');
    }
}

add_action(\'admin_menu\', \'hide_admin_menu\', 999);

结束

相关推荐

如何在Functions.php中使用PHP手动修复WordPress库代码?

Wordpress为内置的gallery功能输出了一些非常糟糕的代码,这已经被谈论了很多次了。这是负责库输出的核心代码(在/wp-includes/media.php中):function gallery_shortcode($attr) { global $post; static $instance = 0; $instance++; // Allow plugins/themes to override the de