Disable wp-admin console for subscribers

You can remove the Read capability. That will prevent all access to wp-admin.

function remove_read_wpse_93843(){  
    $role = get_role( 'subscriber' );
    $role->remove_cap( 'read' );    
}
add_action( 'admin_init', 'remove_read_wpse_93843' );

See the note in the Codex about only needing to run this once.

Then you need to hide the admin bar.

function hide_admin_wpse_93843() {
  if (current_user_can('subscriber')) {
    add_filter('show_admin_bar','__return_false');
  }
}
add_action('wp_head','hide_admin_wpse_93843');

And probably want to redirect subscriber logins:

function redirect_sub_to_home_wpse_93843( $redirect_to, $request, $user ) {
    if ( isset($user->roles) && is_array( $user->roles ) ) {
      if ( in_array( 'subscriber', $user->roles ) ) {
          return home_url( );
      }   
    }
    return $redirect_to;
}
add_filter( 'login_redirect', 'redirect_sub_to_home_wpse_93843', 10, 3 );

Other attempts to access wp-admin will result in the “You do not have sufficient permissions…” almost-white screen.

That is somewhat bare-bones but I think it gets you there.

Leave a Comment