Disabilitare la console wp-admin per gli iscritti

29 mar 2013, 13:08:24
Visualizzazioni: 14.5K
Voti: 6

Non voglio che gli utenti con ruolo "subscriber" possano accedere tramite wp-admin.

Come suggerisci di fare questo?

0
Tutte le risposte alla domanda 1
3
18

Puoi rimuovere la capacità Read. Questo impedirà ogni accesso a wp-admin.

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

Vedi la nota nel Codex riguardo al fatto che questo codice va eseguito solo una volta.

Poi devi nascondere la barra di amministrazione.

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

E probabilmente vorrai reindirizzare i login degli subscriber:

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

Altri tentativi di accesso a wp-admin risulteranno in una schermata quasi bianca con il messaggio "Non hai i permessi sufficienti...".

Questa è una soluzione piuttosto essenziale ma penso che ti permetta di raggiungere l'obiettivo.

29 mar 2013 16:11:12
Commenti

Grazie, proprio quello che stavo cercando. Proverò subito.

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

Grazie per la tua risposta. È esattamente quello che stavo cercando.

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

remove_cap() funziona diversamente ora. Ristruttura il tuo codice seguendo uno degli esempi su questa pagina.

luukvhoudt luukvhoudt
22 mar 2018 10:44:12