Disabilitare la dashboard di WordPress agli utenti sottoscrittori
da Massimo Della Rovere · pubblicato il 29 Giugno, 2017 · modificato il 3 Luglio, 2017

Molte volte si può avere la necessità di disabilitare l’accesso alla dashboard di WordPress per alcune tipologie di utenti.  Ad esempio, quando abbiamo dei siti web gestiti da uno o pochi amministratori e con degli iscritti che devono solo commentare o fare acquisti, potrebbe essere utile disabilitare l’accesso alla parte di amministrazione, sia per questioni di sicurezza ma anche per inutilità.

Disabilitare la dashboard

Per eseguire questa funzione basta utilizzare una azione (init), aggiungere i controlli desiderati ed eseguire un redirect alla home page del nostro sito.  Con poche righe di programma andiamo a risolvere il problema. Il codice lo potete inserire nel template function.php del vostro tema o scrivere un piccolo plugin.

Disabilitare gli utenti sottoscrittori

// Disabilito la console di amministrazione
// agli utenti che non sono amministratori

function my_disable_dashboard()
{
  if (is_admin() && is_user_logged_in() && !wp_doing_ajax())
  {
    if (current_user_can('subscriber')) {
        wp_redirect(home_url()); exit();
    }
  }
}

// Aggiungo azione su init() per il
// controllo degli accessi su dashboard

add_action('init','my_disable_dashboard');

Disabilitare tutti meno gli amministratori

// Disabilito la console di amministrazione
// agli utenti che non sono amministratori

function my_disable_dashboard()
{
  if (is_admin() && is_user_logged_in() && !wp_doing_ajax())
  {
    if (!current_user_can('administrator')) {
         wp_redirect(home_url()); exit();
    }
  }
}

// Aggiungo azione su init() per il
// controllo degli accessi su dashboard

add_action('init','my_disable_dashboard');

Community WordPress

Se volete scambiare informazioni su WordPress con altri esperti e rimanere aggiornati sulle ultime news venite a trovarci nella nostra community italiana su google plus. Se per caso non avete un account google ci trovate anche su facebook.

4 Commenti

  1. Molto utile veramente ma ho una importante domanda che sorge da un ancor più importante problema. Nel momento in cui aggiungo questo codice ho il problema segnalatoti da David Silvestri e cioè è impossibile eseguire azioni come l'aggiunta di un post o qualsiasi altra attività che viene reindirizzata alla home page. Come posso risolvere? Grazie mille

  2. Era proprio l'articolo che stavo cercando e non esiste cosa migliore che trovarlo scritto in italiano. Grazie Max. Ma esiste un modo per sapere quando aggiungi un nuovo articolo? Mi ero iscritto alla newsletter ma non ricevo nessun update.

  3. Ciao Max, ho letto il tuo articolo. C'è un errore nella scrittura del codice: manca un apicetto qui add_action('init',my_disable_dashboard'); Il controllo poi non è completo perché se viene fatta una chiamata ajax anche questa viene rimandata alla home essendo anche quella una chiamata is_admin(): deve essere aggiunto il controllo !defined( 'DOING_AJAX' ) oppure wp_doing_ajax() disponibile da wp4.7+

  4. Ciao David, piacere di risentirti dopo parecchio tempo. Hai perfettamente ragione, infatti mi chiedevo come era possibile che il codice su questo sito mi funzioni bene senza il controllo, poi ho visto che io uso dei function.php diversi in base all'ambiente, ajax, backend e frontend e quindi non mi ero accorto perchè il controllo lo faccio a monte. Grazie, ho corretto l'articolo.

condividi