Come rimuovere l'accesso alla dashboard per ruoli utente specifici?

15 lug 2011, 00:06:16
Visualizzazioni: 23.3K
Voti: 13

Vorrei impedire a determinati ruoli utente di accedere completamente alla dashboard http://www.openeye.net/wp-admin/. Ho spostato e ridisegnato i profili utente in una nuova pagina visibile sul sito. Come posso procedere per farlo?

1
Commenti

Ho chiesto a WooCommerce di modificare la loro configurazione, in modo che sia possibile gestire le autorizzazioni per la loro parte del menu. L'idea ha bisogno di voti su: https://ideas.woocommerce.com Per favore, dai il tuo massimo di 3 punti, grazie!

Stefan Stefan
21 nov 2019 09:55:23
Tutte le risposte alla domanda 4
7
27

Per impedire l'accesso all'area di amministrazione a iscritti e collaboratori:

function wpse23007_redirect(){
  // Se siamo nell'area admin, non è una richiesta AJAX e l'utente ha ruolo "subscriber" o "contributor"
  if( is_admin() && !defined('DOING_AJAX') && ( current_user_can('subscriber') || current_user_can('contributor') ) ){
    wp_redirect(home_url()); // Reindirizza alla home
    exit;
  }
}
add_action('init','wpse23007_redirect'); // Aggiunge l'azione al hook 'init'

Spero sia utile. Tutti i ruoli assegnano all'utente una capacità (capability) con lo stesso nome del ruolo, quindi puoi usare qualsiasi nome di ruolo come capacità.

15 lug 2011 00:13:46
Commenti

Eccellente, però sto ricevendo un errore di sintassi sulla seconda riga.

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

Oh ok, è relativo alla parentesi extra dopo ('DOING_AJAX')

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

Oh, scusa; era intenzionale. Doveva essercene un'altra di chiusura alla fine. L'ho aggiunta alla risposta.

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

C'è un motivo per cui questo non funziona con il tema 2011 e il plugin members?

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

Sembra non funzionare sui siti della rete, qualche idea sul perché?

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

Mi sembra funzionare, su un'installazione standard di WordPress. Grazie mille :-)

Joshc Joshc
10 mar 2012 19:54:40

Richiesta Ajax su admin-ajax.php mi reindirizza alla homepage. Non sto utilizzando multisite.

Sisir Sisir
7 mag 2012 13:19:31
Mostra i restanti 2 commenti
0
//Se il Ruolo Utente è Sottoscrittore, non può accedere alla Bacheca
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ì, dovresti usare la funzione current_user_can( $capability ). Ecco il riferimento ufficiale di 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 lug 2019 19:52:03