Removing specific menu items?

时间:2012-04-02 作者:redconservatory

我使用以下命令删除“编辑器”的某些菜单

function remove_menus () {
        global $menu;

        if( (current_user_can(\'install_themes\')) ) { 
            $restricted = array(); } // check if admin and hide nothing
            else { // for all other users

                // Remove Tools, Appearance, Links, Plugins, Comments,
                if ($current_user->user_level < 10)
                $restricted = array(__(\'Posts\'),  __(\'Links\'), __(\'Appearance\'), __(\'Tools\'), __(\'Settings\'), __(\'Comments\'), __(\'Plugins\')); // this removes a lot! Just delete the ones you want to keep showing
                end ($menu);
                while (prev($menu)){
                    $value = explode(\' \',$menu[key($menu)][0]);
                    if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
                }
            }
        }

    add_action(\'admin_menu\', \'remove_menus\');
除非客户要求删除以下内容,否则此操作有效:

在仪表板上,删除“添加新页面”。

enter image description here

在“页面”选项卡下,删除“添加新页面”:

enter image description here

这可能吗?

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

一个更简单的解决方案是使用remove_menu_page , remove_submenu_pageremove_menu (管理栏)。

删除“add new”子菜单项的示例如下

remove_submenu_page( \'edit.php?post_type=page\', \'post-new.php?post_type=page\' );
要将其从管理菜单栏中删除,可以使用@BandonRandon帖子中的示例。

SO网友:shabushabu

请注意,再也没有必要乱弄全局菜单了。自WP 3.1(或其左右版本)以来,我们有两个新功能可供使用,您可以从菜单中删除任何页面:

remove_submenu_page( $menu_slug, $submenu_slug );
remove_menu_page( $menu_slug );
示例用法如下:

remove_submenu_page( \'edit.php\', \'post-new.php\' );
要在不使用插件的情况下限制对页面的访问(视情况而定,这可能是过度使用),您可以使用$pagenow全局:

function my_restrict_access() {
    global $pagenow;

    if( $pagenow == \'post-new.php\' && ! current_user_can( \'publish_posts\' ) )
          wp_redirect( admin_url() );
}
add_action( \'admin_init\', \'my_restrict_access\', 0 );

SO网友:Brooke.

我同意m0r7if3r,您需要使用角色编辑插件,这样用户就不能添加/编辑页面了。完成后,您可以执行类似操作来隐藏菜单。

add_action( \'admin_menu\' , \'wpse_47731_remove_admin_menus\',11 );
add_action( \'wp_before_admin_bar_render\', \'wpse_47731_remove_admin_bar_links\' );
add_action(\'admin_head\',\'wpse_47731_hide_admin_buttons\');

function wpse_47731_remove_admin_menus() {
    if (!current_user_can( \'edit_pages\' ) ) {
        //pages
        global $menu;
        global $submenu;
        unset( $menu[75] );
        unset($submenu[\'edit.php?post_type=page\'][10][1]);
    }
     else {
        return;
    }
}

function wpse_47731__hide_admin_buttons(){
  global $current_screen;
  if (!current_user_can( \'edit_pages\' ))     {
        if ( ($current_screen->id == \'edit-page\' ) || ( $current_screen->id == \'page\'))
            {
               echo \'<style>.add-new-h2,#add_gform{display:none;}</style>\';  
        }
        else if( ($current_screen->id == \'edit-post\' ) || ( $current_screen->id == \'post\'))
           {
            echo \'<style>#add_gform {display:none;}</style>\';  

        }
    else{
        return;
    }

}
}

function wpse_47731_remove_admin_bar_links() {
    if (!current_user_can( \'edit_pages\' ) ) {
        global $wp_admin_bar;
        $wp_admin_bar->remove_menu(\'new-page\');
    }
}
这是我使用的基本代码,我假设您可能已经通过函数连接到这些代码中,但您必须稍微使用它。当我最初这样做的时候,我在谷歌上找到了一篇非常好的文章,解释了这一切是如何工作的,但我丢失了书签,但如果我找到了,我一定会发帖的。

这是贾斯汀·塔德洛克的帖子(非常好)http://justintadlock.com/archives/2011/06/13/removing-menu-pages-from-the-wordpress-admin

结束

相关推荐

Remove menus and submenus

所以我找到了一些方便的代码片段来帮助删除管理菜单项。但是,我对子菜单项有问题。我想保留外观菜单,但去掉主题、小部件和编辑器。function remove_menus() { global $menu; global $current_user; get_currentuserinfo(); if($current_user->user_login == \'username\') { $restricted = array(__(\'