Deshabilitar la consola wp-admin para suscriptores

29 mar 2013, 13:08:24
Vistas: 14.5K
Votos: 6

No quiero que los usuarios (rol: suscriptor) puedan iniciar sesión a través de wp-admin.

¿Cómo sugieres que lo haga?

0
Todas las respuestas a la pregunta 1
3
18

Puedes eliminar la capacidad Read. Esto evitará todo acceso a wp-admin.

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

Consulta la nota en el Codex sobre solo necesitar ejecutar esto una vez.

Luego necesitas ocultar la barra de administración.

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

Y probablemente quieras redirigir los inicios de sesión de suscriptores:

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

Otros intentos de acceder a wp-admin resultarán en la pantalla casi blanca con el mensaje "No tienes permisos suficientes...".

Esto es algo básico pero creo que te lleva al resultado deseado.

29 mar 2013 16:11:12
Comentarios

Gracias, justo lo que estaba buscando. Voy a probarlo ahora mismo.

Prakash Raman Prakash Raman
29 mar 2013 23:22:14

Gracias por tu respuesta. Es exactamente lo que estaba buscando.

João Paraná João Paraná
14 jul 2014 02:15:06

remove_cap() funciona diferente actualmente. Refactoriza tu código usando uno de los ejemplos de esta página.

luukvhoudt luukvhoudt
22 mar 2018 10:44:12