Dezactivează panoul wp-admin pentru abonați

29 mar. 2013, 13:08:24
Vizualizări: 14.5K
Voturi: 6

Nu doresc ca utilizatorii (cu rolul de abonat) să se poată autentifica prin wp-admin.

Cum ați sugera să implementez acest lucru?

0
Toate răspunsurile la întrebare 1
3
18

Puteți elimina capabilitatea Read. Acest lucru va preveni orice acces la wp-admin.

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

Consultați nota din Codex despre necesitatea de a rula acest cod o singură dată.

Apoi trebuie să ascundeți bara de administrare.

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

Și probabil veți dori să redirecționați abonații la logare:

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

Orice altă încercare de accesare a wp-admin va rezulta în ecranul aproape alb cu mesajul "Nu aveți permisiuni suficiente...".

Aceasta este o soluție minimalistă, dar vă va ajuta să atingeți scopul dorit.

29 mar. 2013 16:11:12
Comentarii

Mulțumesc, exact ce căutam. O să încerc acum.

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

Mulțumesc pentru răspuns. Exact ce căutam.

João Paraná João Paraná
14 iul. 2014 02:15:06

remove_cap() funcționează diferit în zilele noastre. Refactorizează codul tău după unul dintre exemplele de pe această pagină.

luukvhoudt luukvhoudt
22 mar. 2018 10:44:12