如何从特定用户角色中删除仪表板访问权限?


11

我想完全阻止某些用户角色访问仪表板http://www.openeye.net/wp-admin/。我已经将用户配置文件移至其上并重新设置了样式,使其在网站上可见的新页面中。我将如何去做呢?


我请求WooCommerce更改其设置,因此可以管理菜单中的部分内容的授权。这个想法需要投票:https : //ideas.woocommerce.com请给它最多3分,谢谢!
Stefan

Answers:


22

要将订阅者和贡献者锁定在管理员之外:

function wpse23007_redirect(){
  if( is_admin() && !defined('DOING_AJAX') && ( current_user_can('subscriber') || current_user_can('contributor') ) ){
    wp_redirect(home_url());
    exit;
  }
}
add_action('init','wpse23007_redirect');

希望能有所帮助。所有角色为用户提供的功能就是该角色的名称,因此您可以使用任何角色名称作为功能。


很好,但是第二行出现语法错误。
Zach Shallbetter 2011年

哦,好吧,这与多余的内容有关(((DOING_AJAX')之后
Zach Shallbetter 2011年

哦对不起; 那是故意的。最后应该还有一个关门。我将其添加到答案中。
约翰·布洛赫

是否有理由不适用于2011主题和Members插件?
Zach Shallbetter 2011年

1
这似乎不适用于网站,为什么?
Zach Shallbetter 2011年

1
//If User Roll is Subscriber, It can not login in Dashboard 
function wpse23007_redirect()
{
    if( is_admin() && !defined('DOING_AJAX') && current_user_can('subscriber') )
    {
        wp_logout();
        wp_redirect(home_url());
        exit;
    }
}
add_action('init','wpse23007_redirect');


0
 add_action('init', function(){

      $redirect = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : home_url( '/' );
      $user = wp_get_current_user();
      if ( !defined('DOING_AJAX') && in_array( 'subscriber', (array) $user->roles ) ) {

          wp_redirect($redirect);
          exit();
      }
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.