¿Cómo elimino el acceso al tablero de roles de usuario específicos?

11

Me gustaría evitar que ciertos roles de usuario accedan al panel de control http://www.openeye.net/wp-admin/ en absoluto. He movido y rediseñado los perfiles de usuario a una nueva página que se puede ver en el sitio. ¿Cómo haría para hacer esto?

Zach Shallbetter
fuente
Solicité a WooCommerce que cambiara su configuración, por lo que es posible administrar autorizaciones para su parte del menú. La idea necesita votos en: https://ideas.woocommerce.com Por favor, dale tu máximo de 3 puntos, ¡gracias!
Stefan

Respuestas:

23

Para bloquear a los suscriptores y contribuyentes fuera del administrador:

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');

Espero que ayude. Todos los roles le dan al usuario una capacidad que es el nombre de ese rol, por lo que puede usar cualquier nombre de rol como una capacidad.

John P Bloch
fuente
Excelente, sin embargo, obtengo un error de sintaxis en la segunda línea.
Zach Shallbetter
Oh ok, está relacionado con el extra (después ('DOING_AJAX')
Zach Shallbetter
Oh, lo siento; Eso fue intencional. Se suponía que habría otro que se cerraría al final. Lo agregué a la respuesta.
John P Bloch
¿Hay alguna razón por la que esto no funciona con el tema de 2011 y el complemento de miembros?
Zach Shallbetter
Esto no parece funcionar en sitios de red, ¿alguna idea de por qué?
Zach Shallbetter
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');
Ganpat Rabari
fuente
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();
      }
});
sudip
fuente