¿Cómo eliminar el acceso al panel de control para roles de usuario específicos?

15 jul 2011, 00:06:16
Vistas: 23.3K
Votos: 13

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

1
Comentarios

Solicité a WooCommerce que cambiaran su configuración, para que sea posible gestionar las autorizaciones para su parte del menú. La idea necesita votos en: https://ideas.woocommerce.com Por favor, dale tus 3 puntos máximos, ¡gracias!

Stefan Stefan
21 nov 2019 09:55:23
Todas las respuestas a la pregunta 4
7
27

Para bloquear el acceso al área de administración a suscriptores y colaboradores:

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 esto ayude. Todos los roles de usuario otorgan una capacidad que coincide con el nombre del rol, por lo que puedes utilizar cualquier nombre de rol como capacidad.

15 jul 2011 00:13:46
Comentarios

Excelente, sin embargo estoy obteniendo un error de sintaxis en la segunda línea.

Zach Shallbetter Zach Shallbetter
15 jul 2011 00:23:46

Ah, vale, está relacionado con el paréntesis extra después de ('DOING_AJAX')

Zach Shallbetter Zach Shallbetter
15 jul 2011 00:58:14

Oh, lo siento; eso fue intencional. Se suponía que había otro paréntesis de cierre al final. Lo he añadido a la respuesta.

John P Bloch John P Bloch
15 jul 2011 18:06:32

¿Hay alguna razón por la que esto no funcione con el tema 2011 y el plugin de miembros?

Zach Shallbetter Zach Shallbetter
9 sept 2011 09:36:43

Esto no parece funcionar en sitios de red, ¿alguna idea de por qué?

Zach Shallbetter Zach Shallbetter
10 oct 2011 00:59:11

Parece funcionar para mí, en una instalación estándar de WordPress. Muchas gracias :-)

Joshc Joshc
10 mar 2012 19:54:40

Solicitud Ajax en admin-ajax.php me redirige a la página de inicio. No estoy en multisite.

Sisir Sisir
7 may 2012 13:19:31
Mostrar los 2 comentarios restantes
0
// Si el rol de usuario es Suscriptor, no puede iniciar sesión en el Panel de Control
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');
28 ago 2016 09:59:53
0

Sí, necesitarías usar la función current_user_can( $capability ). Aquí está la referencia oficial de WordPress: https://codex.wordpress.org/Function_Reference/current_user_can

28 ago 2016 11:44:44
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();
      }
});
15 jul 2019 19:52:03