Remove admin menu

时间:2012-07-23 作者:user983248

如何删除admin以下用户的admin菜单项和Disable访问?正确的方式。。。

// 1 - Remove Menu Items
function my_remove_menu_pages() {
    if ( !current_user_can( \'administrator\' ) ) {
        remove_menu_page(\'options-general.php\'); // Settings
        remove_menu_page(\'tools.php\'); // Tools
        remove_menu_page(\'upload.php\'); // Media
        remove_menu_page(\'plugins.php\');
        remove_menu_page(\'themes.php\');
        remove_menu_page(\'edit-comments.php\');
        remove_menu_page(\'edit.php?post_type=page\');
        remove_menu_page(\'link-manager.php\');
    }
}
add_action( \'admin_init\', \'my_remove_menu_pages\' );

// 2 - Redirect users if they visit links from non visible menu items
function no_permission_admin_redirect() {
    if ( !current_user_can( \'administrator\' ) ) {
        if (stripos($_SERVER[\'REQUEST_URI\'],\'tools.php\') !== false 
            || stripos($_SERVER[\'REQUEST_URI\'],\'options-general.php\') !== false 
            || stripos($_SERVER[\'REQUEST_URI\'],\'upload.php\') !== false 
            || stripos($_SERVER[\'REQUEST_URI\'],\'media.php\') !== false 
            || stripos($_SERVER[\'REQUEST_URI\'],\'edit-comments.php\') !== false 
            || stripos($_SERVER[\'REQUEST_URI\'],\'post-new.php?post_type=page\') !== false 
            || stripos($_SERVER[\'REQUEST_URI\'],\'post-new.php\') !== false 
            || stripos($_SERVER[\'REQUEST_URI\'],\'media-new.php\') !== false 
            || stripos($_SERVER[\'REQUEST_URI\'],\'edit.php?post_type=page\') !== false 
            || stripos($_SERVER[\'REQUEST_URI\'],\'link-manager.php\') !== false) { 
            wp_redirect(get_option(\'siteurl\') . \'/wp-admin/index.php?permissions_error=true\'); 
        }
    }
}
add_action(\'admin_menu\',\'no_permissions_admin_redirect\');


// 3 - Show error message to users if they visit links from non visible menu items
function no_permissions_admin_notice() { 
        echo "<div id=\'permissions-warning\' class=\'error fade\'><p><strong>".__(\'You do not have permission to access that page.\')."</strong></p></div>";
    }

function no_permissions_show_notice() {
        if($_GET[\'permissions_error\']) {
            add_action(\'admin_notices\', \'no_permissions_admin_notice\');
        }
    }
add_action(\'admin_init\',\'no_permissions_show_notice\');
这段代码可以工作,但不幸的是,用户可以通过在浏览器上键入url来访问某些页面,而不会出现任何错误或重定向。

如果用户在浏览器上键入url而不使用插件访问页面,是否有一种简单的方法可以删除菜单项并将用户重定向到仪表板?

1 个回复
最合适的回答,由SO网友:W van Dam 整理而成

我想有三种方法可以做到这一点。

首先,您可以从阻止对admin的所有访问开始。然后将允许浏览的页面列入白名单。除非您的用户确实受到限制,否则这可能需要一段时间才能解决。

其次,您可以使用WP的内置功能系统,删除您想要限制的角色的功能。首先,请看这里:http://codex.wordpress.org/Roles_and_Capabilities

第三,您可以选择使用插件,例如Adminimize:http://wordpress.org/extend/plugins/adminimize/

在任何情况下,您都应该通过current\\u user\\u can()传递功能,而不是角色:http://codex.wordpress.org/Function_Reference/current_user_can

希望这三个问题中有一个你喜欢的解决方案。祝你好运

结束

相关推荐

Custom menus not showing

作为我上一次关于菜单的未解决查询的后续,这个问题已经进一步扩展。我的菜单没有打印代码中的任何地方。我正在注册菜单功能。php:add_action( \'after_setup_theme\', \'your_newtheme_setup\' ); if ( ! function_exists( \'your_newtheme_setup\' ) ) : function your_newtheme_setup() { if (