Come rimuovere l'accesso alla dashboard per ruoli utente specifici?
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?

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à.

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

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

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

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

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

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

Sì, dovresti usare la funzione current_user_can( $capability ). Ecco il riferimento ufficiale di WordPress: https://codex.wordpress.org/Function_Reference/current_user_can

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