Ruoli WordPress: la guida definitiva per capirli davvero

Condividi su facebook
Condividi su twitter
Condividi su linkedin
Condividi su email
I #ruoli #WordPress sono uno strumento di gestione completo. Usarli al meglio significa conoscerli bene. Ecco una #guida approfondita a riguardo.
Ultima modifica il 17 Marzo 2021
Tempo di lettura: 35 min.

I ruoli WordPress e le capacità degli utenti nella piattaforma danno la possibilità di controllare ciò che gli altri utenti possono o non possono fare sul tuo sito. Puoi usarli per gestire le azioni degli utenti come scrivere e modificare i post, creare nuove pagine, moderare i commenti, installare plugin, aggiungere nuovi utenti e molto altro ancora.

La comprensione dei ruoli e dei permessi degli utenti è essenziale per gestire qualsiasi sito WordPress. Per esempio, se stai costruendo un sito per un cliente, non vorresti che modificasse o cambiasse il tema installato. Allo stesso modo, non è saggio lasciare che gli autori di un blog installino o rimuovano i plugin.

Imparare a gestire i ruoli degli utenti di WordPress in modo intelligente ti aiuterà a snellire il tuo flusso di lavoro, a mantenere il tuo sito sicuro e ad ottenere il massimo controllo sul tuo sito.

In questa ampia guida, imparerai a conoscere i ruoli WordPress degli utenti, le varie funzionalità che la piattaforma fornisce, come modificare i ruoli utente esistenti, come gestire gli utenti su più siti e come creare nuovi ruoli con un nuovo set di funzionalità.

La maggior parte della guida è piuttosto tecnica, ma indispensabile per capire appieno i ruoli e le loro capacità. Nell’ultima parte troverai una sezione che suggerisce un plugin per la gestione completa dei ruoli. Ti invito a leggere anche le parti precedenti per capire i ruoli. Eventualmente userai il plugin per la gestione, senza doverti sporcare le mani con il codice.

Ti ricordo che ho un canale YouTube in cui parlo di WordPress e di Web Design, ho pubblicato anche dei video corsi su Udemy. Per ottenere degli sconti sui corsi, basterà iscriversi alla newsletter!

Lo sponsor del blog è Siteground. Se avessi bisogno di un hosting, non esitare a scegliere Siteground, è eccezionale! Ne ho parlato in un articolo apposito.

Quali sono i ruoli WordPress e le loro capacità

I ruoli WordPress e le capacità sono il pane quotidiano della gestione degli accessi degli utenti. Per capire quali sono i ruoli degli utenti in WordPress, devi prima sapere quali sono le capacità. Le capacità (capability in inglese) definiscono qualsiasi azione che un utente (o meglio un ruolo) può intraprendere in WordPress.

Ecco alcuni esempi di capacità disponibili in WordPress e come sono referenziate nel codice, cioè come ci si riferisce a queste capacità quando si scrive del codice:

La maggior parte delle capacità sono autoesplicative, il loro nome dice già a cosa servono. Sappi, però, che WordPress ha più di 70 capacità hardcoded, cioè scritte nel suo core, nel motore.

  • Un Ruolo WordPress è un insieme di capacità che puoi assegnare ad un utente.
  • Ogni utente di WordPress deve avere un ruolo assegnato.
  • Un utente può intraprendere solo le azioni che il suo ruolo gli garantisce.
CapacitàSuper AdminAdminEditorAutoreContr.Subs.
Read PostsXXXXXX
Post CommentsXXXXXX
Creare bozzeXXXXX
Pubblicare i propri postXXXX
Upload mediaXXXX
Creare pagineXXX
Moderare contenutiXXX
Gestire temiXX
Gestire utentiXX
Creare una reteX
Una lista non esaustiva dei ruoli WordPress e delle capacità assegnate loro

Nella tabella sono indicate alcune capacità e quali ruoli, tra quelli standard, possono usufruirne. Tutti possono leggere i post, ma solo i contributor o ruoli superiori possono crearne. Gli editor possono gestire i contenuti, ma solo gli admin e i super admin possono gestire i temi.

Più capacità ha un ruolo, più in alto si trova in una ipotetica scala di responsabilità e gestione.

ruoli wordpress ruoli wordpress nuovo utente
Una schermata di creazione di un nuovo utente con la scelta dei ruoli

WordPress usa molte delle capacità native (chiamate in precedenza hardcoded) per definire i suoi ruoli utente di default. Per esempio, concede agli Amministratori (admin) e agli Editori (editor) la publish_page capability, ma non la assegna agli Abbonati (subscribers) e ai Collaboratori (contributor).

Come minimo, ogni utente ha un nome utente, una password, un indirizzo e-mail e un ruolo WordPress.

ruoli wordpress ruoli wordpress tabella wp user roles
La riga del database in cui sono stoccate le informazioni sui ruoli

WordPress memorizza tutte le capacità basate sui ruoli nel database nella tabella wp_options sotto l’opzione serialized wp_user_roles. La classe core di WP_Roles è usata per definire come memorizzare ruoli e capacità nel database.

Nell’immagine mostrata l’opzione è lezwp_user_roles perché sono stati cambiati i prefissi del database come forma di sicurezza. Scopri come fare per aumentare la sicurezza del tuo sito!

La classe WP_Roles

WordPress implementa ruoli e funzionalità con le API User Roles, la maggior parte delle quali si basa sulla classe core WP_Roles. Si può trovare il suo sorgente nel file wp-includes/class-wp-roles.php.

Se si sbircia nel database, si troverà che i ruoli sono all’interno di un array con i loro nomi di ruolo definiti. La chiave rolename memorizza il nome del ruolo dell’utente come valore della chiave name e tutte le capacità in un array separato come valore della chiave capability.

array (
     'rolename' => array (
         'name' => 'rolename',
         'capabilities' => array()
     )
)

La classe WP_Roles definisce molti metodi. È possibile chiamarli in qualsiasi punto del codice per interagire con le API dei ruoli utente.

Nota: WordPress include un’altra classe di base chiamata WP_Role (si noti il singolare ‘Role’). È usata per estendere l’API dei ruoli utente.

Quando si deserializza il valore chiave di wp_user_roles, si ottiene qualcosa di simile a questo:

array (
  'administrator' => 
  array (
    'name' => 'Administrator',
    'capabilities' => 
    array (
      'switch_themes' => true,
      'edit_themes' => true,
      'activate_plugins' => true,
      // [...rest of the lines cut off for brevity...]
    ),
  ),
  'editor' => 
  array (
    'name' => 'Editor',
    'capabilities' => 
    array (
      'moderate_comments' => true,
      'manage_categories' => true,
      'manage_links' => true,
      // [...rest of the lines cut off for brevity...]
    ),
  ),
  'author' => 
  array (
    'name' => 'Author',
    'capabilities' => 
    array (
      'upload_files' => true,
      'edit_posts' => true,
      'edit_published_posts' => true,
      // [...rest of the lines cut off for brevity...]
    ),
  ),
  'contributor' => 
  array (
    'name' => 'Contributor',
    'capabilities' => 
    array (
      'edit_posts' => true,
      'read' => true,
      // [...rest of the lines cut off for brevity...]
    ),
  ),
  'subscriber' => 
  array (
    'name' => 'Subscriber',
    'capabilities' => 
    array (
      'read' => true,
      'level_0' => true,
    ),
  ),
)

E’ un array multidimensionale con ogni ruolo assegnato un nome di ruolo e con un insieme di capacità. Allo stesso modo, WordPress memorizza le capacità basate sull’utente nella tabella wp_usermeta con il nome della metachiave wp_capabilities.

Nota: Il prefisso wp_ può essere diverso nella tua configurazione. Dipende dal valore della variabile globale $table_prefix nel file wp-config.php del tuo sito.

Tabella Ruoli vs Capacità

Il Codex WordPress include una semplice Tabella Ruolo vs Capacità, anche se non è così intuitiva. Riassume tutte le azioni che i ruoli utente predefiniti possono svolgere sia in configurazioni WordPress a sito singolo che multisito. C’è una pausa dopo un certo numero di funzionalità per facilitare la distinzione tra funzionalità di alto e basso livello.

Per una migliore rappresentazione di tutti i ruoli e le capacità di WordPress a colpo d’occhio, puoi utilizzare questa tabella più semplice da leggere.

Capacità collegate ai blocchi riutilizzabili di Gutenberg

L’editor di blocchi di WordPress Gutenberg ha introdotto una funzione sorprendente chiamata Blocchi riutilizzabili. Permette di salvare un intero blocco (o più blocchi) come modello e di usarlo in qualsiasi altro punto del tuo sito.

ruoli wordpress Blocchi riutilizzabili gutenberg
La scelta di aggiunta ai blocchi riutilizzabili nel menu contestuale di Gutenberg.

Di conseguenza, WordPress ha anche introdotto le seguenti nuove capacità relative ai blocchi riutilizzabili:

  • Creare blocchi riutilizzabili
  • Modificare blocchi riutilizzabili
  • Leggere i blocchi riutilizzabili
  • Cancellare i blocchi riutilizzabili

Le capacità sopra elencate funzionano in modo simile alle capacità relative ai post. Un Admin o un Editor ha accesso a tutte le capacità relative ai blocchi riutilizzabili, mentre un Autore può solo modificare o cancellare i blocchi riutilizzabili da loro creati. I contributori possono leggere solo i blocchi riutilizzabili.

Capacità speciale: upload non filtrato

L’upload non filtrato è una capacità speciale che non è assegnata ad alcun ruolo utente per default, inclusi l’Amministratore o il Super Admin. Permette ad un utente di caricare file con qualsiasi estensione (es. SVG o PSD), non solo quelli elencati in whitelist da WordPress.

Nota: Puoi ottenere una lista dei tipi di mime type e delle estensioni dei file supportati da WordPress utilizzando la funzione wp_get_mime_types().

Per abilitare questa funzione, devi aggiungere il seguente frammento di codice al tuo file wp-config.php. Definisci la costante qui sotto prima della linea che ti chiede di smettere di modificare il file.

define( 'ALLOW_UNFILTERED_UPLOADS', true );

Per maggiori informazioni sull’uso degli SVG, puoi consultare l’articolo apposito e anche un video YouTube pubblicato per l’occorrenza.

Dopo aver definito la costante nel file wp-config.php, puoi assegnare a qualsiasi utente la funzionalità di upload non filtrato. Tuttavia, su un Multisito installare solo un Super Admin può avere questa capacità.

Per esempio, se vuoi assegnare la capacità di upload non filtrato ad un Editor, puoi aggiungere il seguente codice in qualsiasi punto del tuo codice WordPress (idealmente, eseguilo solo sull’attivazione del tema/plugin):

  $role = get_role( 'editor' );
  $role->add_cap( 'unfiltered_upload' );

Discuteremo più avanti in questo articolo su come aggiungere o personalizzare le funzionalità di tutti i ruoli utente o di utenti specifici.

Capacità primitive vs meta-capacità

Ci sono principalmente due tipi di capacità in WordPress:

  • Le capacità primitive: Queste capacità sono concesse a ruoli particolari. Gli utenti con questi ruoli ereditano automaticamente le capacità primitive.
  • Le meta-capacità: Queste capacità non sono concesse ad alcun ruolo di default. WordPress controlla un certo oggetto nel suo codice e nel suo database, come post, pagina, utente o qualsiasi tassonomia, e se la logica è verificata, “mappa” una meta-capacità ad una o più capacità primitive.

Per esempio, WordPress concede agli Autori la capacità edit_posts per i loro post in modo che siano in grado di modificarli. Tuttavia, questa capacità non permette loro di modificare i post degli altri utenti. Questo è il momento in cui le meta-capacità tornano utili.

WordPress usa la funzione map_meta_cap() per restituire un array di capacità primitive legate ad un oggetto specifico. Poi le confronta con l’oggetto utente per verificare se l’utente può modificare il post.

Alcuni altri esempi di capacità meta sono read_post, delete_post, remove_user e read_post. Li esamineremo più a fondo nella sezione delle capacità personalizzate qui sotto.

I sei ruoli WordPress predefiniti

WordPress include sei ruoli utente predefiniti. Il primo utente di un’installazione WordPress ottiene il ruolo di amministratore di default (o il ruolo di Super Admin con le installazioni WordPress Multisito).

Da quando WordPress ha iniziato come piattaforma di blogging prima di svilupparsi in un vero e proprio CMS, definisce la maggior parte dei suoi ruoli utente per pubblicare contenuti sul web. Gli altri ruoli utente predefiniti sono Editor, Autore (author), Collaboratore (contributor) e Abbonato (subscriber).

Rappresentazioni ruoli WordPress
Una rappresentazione dei ruoli in WordPress

Immagina i ruoli utente di WordPress come una serie di scatole impilate che rappresentano varie capacità. La scatola più grande ha le maggiori capacità, la seconda più grande ha le seconde capacità, e quella più piccola ha le minori capacità.

Non dovresti considerare un ruolo come superiore ad un altro. Piuttosto, pensa ai ruoli come a stabilire le responsabilità di un utente all’interno del sito.

Vediamo ora nel dettaglio tutti i ruoli uno per uno.

Administrator (admin)

Dashboard WordPress vista come un admin
La dashboard del sito vista come un admin

WordPress assegna al primo utente di qualsiasi installazione su un singolo sito il ruolo di Amministratore. Si trova in cima a tutti gli altri ruoli utente e ha accesso a tutte le funzionalità definite da WordPress. Gli utenti con il ruolo di Amministratore possono eseguire azioni come:

  • Creare e cancellare utenti
  • Installare e gestire plugin e temi
  • Modifica plugin, temi, file e codice

Poiché un Amministratore è il ruolo più potente, dovresti assegnarlo solo a coloro di cui ti fidi. Idealmente, ci dovrebbe essere un solo amministratore per sito.

Il ruolo di Amministratore in una rete di WordPress Multisito è definito in modo un po’ diverso, anche se è chiamato allo stesso modo. In una rete Multisito, il ruolo di Amministratore non gode di alcune capacità che ha in un singolo sito WP, come l’installazione di temi e plugin. WordPress riserva queste capacità per il ruolo di Super Admin.

Redattori / editori (editor)

Dashboard Editor
La dashboard vista con il ruolo di Editor

Un Editore si occupa della gestione dei contenuti di un sito WordPress. Può creare, modificare, pubblicare o cancellare i post e le pagine, anche quelle create da altri utenti. Alcune delle loro capacità includono:

  • Cancellare i post e le pagine pubblicate
  • Moderare i commenti
  • Gestire i link e le categorie
  • Modificare i post e le pagine degli altri utenti

Gli editori non possono intraprendere azioni di amministrazione del sito come l’installazione di plugin e temi. La loro responsabilità principale è quella di supervisionare il lavoro di altri autori e collaboratori o di essere un team di essere l’unico creatore di contenuti del sito.

Suggerimento: se stai gestendo un sito WordPress da solo, puoi creare un utente alternativo per te stesso con il ruolo di editore. In questo modo puoi tenere separati i tuoi compiti di amministratore e quelli di editore. Il tuo account di amministratore è al sicuro dagli hacker anche se il tuo account di editore viene compromesso. Un ulteriore livello di sicurezza per il tuo sito.

Autore

Author dashboard
Dashboard autore

Come suggerisce il nome, ogni utente con un ruolo di Autore può creare, modificare e pubblicare messaggi. Può anche caricare file multimediali e cancellare i propri post, ma non può creare pagine o modificare i post di qualcun altro.

Gli autori possono aggiungere tag ai loro post e assegnare i loro post alle categorie esistenti, ma non possono creare nuove categorie. Come con gli editor, non hanno accesso a nessun compito amministrativo come impostazioni, plugin e temi.

Nota: Un autore può cancellare i suoi post anche dopo che sono stati pubblicati. Se stai assegnando a qualcuno il ruolo di Autore, assicurati che ti vada bene che abbia il completo controllo dei suoi post, inclusa la loro cancellazione.

Collaboratore (contributor)

contributor dashboard
Dashboard del collaboratore

Il ruolo di Collaboratore è una versione ridotta del ruolo di autore. Un utente con il ruolo di collaboratore può creare i propri post, cancellare le bozze dei suoi post, ma non può pubblicare i post.

Può salvare le bozze dei suoi post o inviarle a un Editore o a un Amministratore per la revisione e la pubblicazione. E una volta pubblicato il post, un Collaboratore non può cancellare i suoi post. Al contrario, gli Autori possono cancellare i loro post pubblicati.

Il ruolo di Collaboratore è ideale per i nuovi autori e per i collaboratori ospiti.

Abbonato (subscriber)

Abbonato dashboard
Dashboard di un abbonato

Il ruolo di Abbonato si trova al livello più basso della classifica delle capacità. Un utente con un ruolo di Abbonato può gestire il proprio profilo e ha accesso alla lettura di tutti i post del sito. Questo è più o meno tutto!

Di solito, tutti hanno accesso ai contenuti letti su un sito WordPress. Tuttavia, nei siti di abbonamento o di affiliazione, solo gli utenti registrati possono visualizzare i contenuti. Un utente con un ruolo di Abbonato può leggere i post in questi casi.

Il vantaggio nella gestione dei ruoli

Il sistema di ruoli e capacità è la spina dorsale della gestione degli utenti WordPress. Ecco alcuni dei suoi numerosi vantaggi:

  • I ruoli utente ti aiutano a gestire tutti gli utenti del tuo sito in modo più efficiente. Anche se hai decine di utenti sul tuo sito che lavorano da diverse parti del mondo, puoi supervisionarli facilmente concedendo i ruoli giusti a ciascuno di loro.
  • Limitando gli utenti a capacità specifiche, ti aiuta a mantenere il tuo sito più sicuro. Per esempio, gli autori non possono cancellare i post altrui, i redattori (editor) non possono modificare i temi o installare plugin, e gli abbonati possono accedere solo ai propri profili.
  • I plugin di WordPress possono verificare se un utente ha determinate capacità e, in base a ciò, eseguire una certa azione. La funzione current_user_can() aiuta ad eseguire questo controllo. Per esempio, un plugin di sicurezza può mostrare il suo pannello delle opzioni solo all’amministratore, ma mostra comunque gli avvisi di sicurezza a tutti gli utenti.
  • Puoi modificare i ruoli degli utenti per delegare alcune delle tue responsabilità di ruolo ad altri utenti per liberare il tuo tempo. Diciamo che il tuo sito sta attirando un sacco di commenti. In questi casi, puoi permettere ad un autore di fiducia di accettare commenti di moderazione. Manterrai comunque il massimo potere come amministratore, ma potrai condividere alcune delle tue responsabilità a seconda delle necessità.
  • Puoi usare i controlli di capacità per mostrare i post privati e le pagine che solo alcuni ruoli utente possono visualizzare. Questo costituisce la base dei siti di appartenenza.
  • Puoi mostrare o nascondere elementi frontend sul tuo sito (ad esempio voci di menu, widget) a seconda del ruolo dell’utente.
  • Puoi creare custom post type con funzionalità personalizzate e concedere o negare tali funzionalità per ogni ruolo utente. Allo stesso modo, puoi anche definire capacità personalizzate per permettere solo ad alcuni ruoli di avere accesso alle impostazioni del tuo plugin o del tuo tema.

Come gestire i ruoli WordPress in modo efficiente

Conoscere tutti i ruoli e le capacità degli utenti è essenziale, ma devi anche capire come gestirli in modo efficiente sui tuoi siti. Anche se non ci sono due siti WordPress esattamente uguali, ci sono alcune regole di base che puoi seguire per utilizzare al meglio i ruoli e le capacità degli utenti di WordPress.

  1. Assegna solo l’essenziale a ogni utente

Assegna ad ogni utente del tuo sito solo il livello di accesso di cui ha bisogno. È sempre meglio dare meno permessi che troppi. Assicurare i ruoli degli utenti di WordPress è fondamentale per mantenere il tuo sito e i suoi contenuti al sicuro.

  1. Limita il numero di admin ed editor

Come regola generale, ogni sito dovrebbe avere un solo Amministratore e dovrebbe apportare solo modifiche fondamentali al sito. WordPress raccomanda di aderire al “principio dei privilegi minimi”, che suggerisce di dare all’utente solo i privilegi essenziali per svolgere il lavoro desiderato.

Per esempio, è meglio usare un utente di livello Editor per gestire i contenuti del sito, piuttosto che usare un Amministratore. Se hai più di un Editor sul tuo sito, allora assicurati di poterli affidare alle loro ampie capacità.

Assegna il ruolo di Autore ai creatori di contenuti di cui ti puoi fidare, in quanto possono pubblicare e cancellare i loro post. I ruoli di Collaboratore sono più adatti ai nuovi creatori di contenuti e ai post degli ospiti.

  1. Personalizza i ruoli in base alle necessità

I ruoli utente di default di WordPress sono utili, ma potrebbero non essere adatti ad ogni caso d’uso. Per esempio, dando ai tuoi Autori la possibilità di moderare i commenti.

Fortunatamente, WordPress ci garantisce la possibilità di personalizzare i ruoli utente o di creare nuovi ruoli secondo le nostre esigenze. Puoi farlo manualmente attraverso il codice o con l’aiuto dei plugin dei ruoli utente di WordPress. Tratteremo entrambi i metodi in questo articolo.

Personalizzare i ruoli WordPress esistenti

Puoi aggiungere funzionalità ai ruoli utente esistenti per aumentare il loro livello di accesso. Per esempio, puoi dare agli editor la possibilità di gestire i plugin. O forse vuoi che i contributori moderino i commenti sui propri post. Impariamo come si fa.

Nota: Se non ti piace modificare il codice, puoi saltare il metodo manuale e andare direttamente alla sezione dei ruoli utente e delle funzionalità dei plugin qui sotto. O semplicemente assumere un designer WordPress.

Come aggiungere capacità a un ruolo

Puoi aggiungere una capacità a un ruolo utente o a qualsiasi utente specifico utilizzando la funzione add_cap(). Userò un plugin personalizzato chiamato Customize User Role per mostrare come usare questa funzione per dare al ruolo di Editor la possibilità di gestire i plugin.

?php

/*
Plugin Name:  Customize User Role
Version:  1.0
Description: DImostrazione si personalizzazione utente
Author:  Giacomo Lanzi
Author URI:  https://www.planbproject.it/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  customize-user-role
*/

WordPress raccomanda di eseguire questa funzione sull’attivazione del plugin o del tema in quanto le impostazioni che aggiunge sono memorizzate nel database nella tabella wp_options sotto il campo wp_user_roles. È inefficiente eseguire questa funzione ogni volta che si carica una pagina, perché le tabelle del database continueranno a essere sovrascritte ad ogni caricamento di pagina.

Dato che sto usando un plugin, userò la funzione register_activation_hook() per agganciarmi all’azione che viene eseguita quando si attiva un plugin. Ci sono molti modi per farlo, ma sto usando una robusta implementazione basata sulle classi per assicurarmi che non ci siano conflitti.

// questo codice viene seguito solo all'attivazione e mai più
function gl_customize_user_role() {
    require_once plugin_dir_path( __FILE__ ).'includes/class-gl-customize-user-role.php';   
    Sal_Customize_User_Role::activate();
}
register_activation_hook( __FILE__, 'gl_customize_user_role' );

Il codice di cui sopra viene eseguito una sola volta durante l’attivazione del plugin. La funzione hooked gl_customize_user_role fa riferimento ad una classe personalizzata chiamata Gl_Customize_User_Role.

Ho definito questa classe in un file separato chiamato class-gl-customize_user-role.php e l’ho inserita nella mia cartella principale del plugin all’interno di una sottocartella chiamata include, ma puoi chiamarla come vuoi.

?php

class Gl_Customize_User_Role {
    public static function activate() {
        // recupera il ruolo editor dalla classe WP_Role
        $editor = get_role( 'editor' );

        // lista delle capacità da aggiungere al ruolo di editor
        $caps = array(
                  'install_plugins',
                  'activate_plugins',
                  'edit_plugins',
                  'delete_plugins'
        );

        // aggiunta delle capacità con un loop foreach
        foreach ( $caps as $cap ) {
            $editor->add_cap( $cap );
        }
    }
}

Ecco una spiegazione dettagliata del codice di cui sopra:

  • Inizia definendo la classe e la sua funzione a cui hai fatto riferimento nel file principale del plugin.
  • La funzione get_role( 'editor' ) recupera l’oggetto ruolo editor dalla classe core WP_Role e lo assegna alla variabile $editor.
  • La gestione dei plugin richiede quattro capacità: install_plugins, activate_plugins, edit_plugins e delete_plugins. Ma la funzione add_cap() accetta solo un parametro. Quindi, dobbiamo includere tutte le capacità all’interno di un array. Definisci l’array $caps per contenere tutte queste capacità. Se stai aggiungendo solo una capacità, allora non c’è bisogno di definire un array.
  • La funzione add_cap( $cap ) aggiunge tutte le capacità definite nell’array $caps, facendo un loop attraverso di esse utilizzando la funzione PHP foreach () .

Salva tutti i file del plugin e poi attiva il plugin dalla dashboard di amministratore. Ora accediamo al dashboard dell’Editor per vedere le modifiche.

Ruoli WordPress - attivazione privilegi Editor
La dashboard dell’utente editor dopo aver attivato il plugin appena creato.

Dopo aver aggiunto le funzionalità relative ai plugin al loro ruolo di utenti, gli editor dell’installazione possono vedere il menu dei plugin elencati nel loro menu di amministrazione. I ruoli WordPress sono piuttosto duttili sotto questo aspetto.

Puoi controllare le capacità assegnate ad ogni ruolo utente controllando il valore della chiave wp_user_roles memorizzato nella tabella wp_options del database del tuo sito WordPress.

Ecco le capacità che ho trovato assegnate al ruolo di Editor:

editor' => 
  array (
    'name' => 'Editor',
    'capabilities' => 
    array (
      'moderate_comments' => true,
      'manage_categories' => true,
      'manage_links' => true,
   // [...] omissione per brevità
      'manage_glossaries' => true,
      'install_plugins' => true,
      'activate_plugins' => true,
      'edit_plugins' => true,
      'delete_plugins' => true,
    ),
  ),

Nota le ultime tre righe che danno agli Editori la possibilità di gestire i plugin.

Se vuoi rimuovere queste capacità, puoi agganciarti alla funzione register_deactivation_hook() e usare la funzione remove_cap() per rimuovere le capacità sulla disattivazione dei plugin, proprio come abbiamo aggiunto queste capacità sull’attivazione dei plugin.

Avremo quindi le seguenti righe da aggiungere al file del plugin:

function gl_customize_user_role_deactivate() {
     require_once plugin_dir_path( __FILE__ ).'includes/class-gl-customize-user-role-deactivate.php';
     Gl_Customize_User_Role_Deactivate::activate();
 }

register_deactivation_hook( __FILE__ , 'gl_customize_user_role_deactivate');

Una nuova classe, che ho aggiunto in un nuovo file per comodità, uguale alla prima ma con remove_cap() al posto di add_cap():

?php

class Gl_Customize_User_Role_Deactivate {
    public static function activate() {
        // recupera il ruolo editor dalla classe WP_Role
        $editor = get_role( 'editor' );

        // lista delle capacità da rimuovere al ruolo di editor
        $caps = array(
                  'install_plugins',
                  'activate_plugins',
                  'edit_plugins',
                  'delete_plugins'
        );

        // rimozione delle capacità con un loop foreach
        foreach ( $caps as $cap ) {
            $editor->remove_cap( $cap );
        }
    }
}

Ora che hai imparato come aggiungere capacità ad un ruolo utente, è il momento di imparare come rimuovere le capacità da un ruolo utente.

Nota: Puoi anche agganciarti all’azione after_switch_theme per licenziare questo codice durante l’attivazione del tema (e/o del tema child). Qui, devi includere il codice nel file functions.php del tuo tema o del tuo tema child (consigliato).

Rimuovere capacità a un ruolo

A volte, potresti voler rimuovere una capacità da uno dei ruoli WordPress. Puoi eseguire la funzione remove_cap() per rimuovere una capacità da un ruolo o da un utente specifico. Per esempio, è un’ottima idea rimuovere la funzionalità delete_published_posts dal ruolo utente Autore.

Creerò un nuovo plugin personalizzato chiamato Customize Author Role per iniziare. Proprio come prima, eseguirò questo codice solo una volta agganciandomi alla funzione register_activation_hook().

?php
 /*
 Plugin Name:  Customize Author Role
 Version:  1.0
 Description:  Dimostrazione su come personalizzare il ruolo di autore
 Author:  Giacomo Lanzi
 Author URI:  https://www.planbproject.it/
 License: GPLv2 or later
 License URI: https://www.gnu.org/licenses/gpl-2.0.html
 Text Domain:  customize-author-role
 */
 // il codice viene eseguito una sola volta all'attivazione e poi mai più
 function gl_customize_author_role() {
     require_once plugin_dir_path( FILE ).'includes/class-gl-customize-author-role.php';
     Gl_Customize_Author_Role::activate();
 }
 register_activation_hook( FILE, 'gl_customize_author_role' );

Successivamente, definirò la classe Gl_Customize_Author_Role all’interno del file class-gl-customize-author-role.php. Ho fatto riferimento ad entrambe queste risorse nel file principale del plugin qui sopra.

?php
 class Gl_Customize_Author_Role {
     public static function activate() {
         // recupera il ruolo di Autore
         $author = get_role( 'author' );
     // rimuove la capacità di cancellare post pubblicati     $author->remove_cap( 'delete_published_posts' ); }
 }

La funzione remove_cap( 'delete_published_posts' ) rimuoverà la possibilità di cancellare i post pubblicati dal ruolo di Autore.

ruoli wordpress Dashboard autore regolare
La dashboard degli articoli vista dal ruolo autore con la possibilità di eliminazione dei post

È il momento di salvare tutti i file del plugin e poi attivarlo. Ora, accedendo alla dashboard dell’autore e vedrai la modifica.

ruoli wordpress Dashboard autore dopo attivazione
La dashboard dell’autore dopo l’attivazione del plugin.

L’opzione Cestino non è più disponibile per i post pubblicati dagli Autori. Tuttavia, essi possono ancora cancellare i loro post non pubblicati che hanno lo stato di Bozza o Pendente.

Se vuoi disabilitare anche questa capacità, allora devi anche rimuovere la capacità delete_posts dal ruolo di Autore.

Aggiunta o rimozione capacità per un utente specifico

Se si vuole aggiungere capacità ad un utente specifico, non a un intero ruolo utente, allora si può usare la funzione di classe WP_User::add_cap() per aggiungere la capacità.

// recupera l'oggetto user dall'ID
$user = new WP_User( $user_id );  
// aggiunti la capacità all'utente
$user->add_cap( $cap );

È possibile utilizzare la funzione get_user_by() per recuperare l’ID di qualsiasi utente utilizzando la sua email, il suo nome utente o lo slug.

Allo stesso modo, è possibile rimuovere le funzionalità da uno specifico utente utilizzando la funzione di classe WP_User::remove_cap().

// recupera l'oggetto user dall'ID
$user = new WP_User( $user_id );  
// rimuovi la capacità all'utente
$user->remove_cap( $cap );

Come prima, esegui queste funzioni solo all’attivazione del plugin o del tema per mantenere il codice ottimizzato.

Nota: Sia add_cap() che remove_cap() sono metodi oggetto della classe WP_Role. Non è possibile chiamarli direttamente nel proprio codice. È necessario accedervi utilizzando la funzione get_role() o la variabile globale $wp_roles.

Duplicare un ruolo

Puoi creare un nuovo ruolo utente clonando tutte le funzionalità di un ruolo utente esistente. Ecco come puoi farlo:

add_role( 'clone', 'Clone', get_role( 'administrator' )->capabilities );

Nell’esempio qui sopra, sto creando un nuovo ruolo chiamato Clone con le stesse capacità di un Amministratore. L’esecuzione di questo codice sull’attivazione del tema o del plugin assicurerà che il ruolo clonato venga aggiunto una sola volta.

Come creare nuovi ruoli WordPress

Le capacità di modifica dei ruoli utente di default sono un modo veloce per personalizzarli. Ma se stai cercando di modificare molte capacità di un ruolo, allora è una buona idea creare un nuovo ruolo utente completamente personalizzato. In questo modo puoi impostare le capacità esatte che vuoi per ogni ruolo sul tuo sito.

Per creare un ruolo utente personalizzato, devi usare la funzione add_role(). Essa accetta tre parametri.

add_role(  $role, $display_name, $capabilities );

I primi due parametri sono obbligatori e dovrebbero essere stringhe. Essi definiscono rispettivamente il nome del nuovo ruolo personalizzato e il nome da mostrare. L’ultimo parametro è opzionale e dovrebbe essere un array. Puoi usarlo per assegnare tutte le capacità per il nuovo ruolo.

Creiamo un ruolo utente personalizzato chiamato Community Manager che può moderare i commenti e modificare i post in tutto il sito. Ecco come puoi farlo:

?php 
/* 
Plugin Name:  Add Community Manager Role 
Version:  1.0 
Description:  Add a Custom User Role called 'Community Manager'
Author:  Giacomo Lanzi 
Author URI:  http://www.planbproject.it/ 
License: GPLv2 or later 
License URI: https://www.gnu.org/licenses/gpl-2.0.html 
Text Domain:  add-community-manager-role 
*/ 
// questo codice viene azionato una sola volta e mai più 
function add_community_manager_role() {
     add_role(
          'community_manager',
          __('Community Manager', 'add-community-manager-role'),
           array(
                'read' => true,
               'moderate_comments' => true,
               'edit_posts' => true,
               'edit_other_posts' => true,
               'edit_published_posts' => true
          )
     ); 
} register_activation_hook( __FILE__, 'add_community_manager_role' );

Come prima, la funzione add_role() funziona solo una volta all’attivazione del plugin e mai più. Salva il file e attiva il plugin nella tua dashboard di amministratore. Ora dovresti essere in grado di assegnare il ruolo di Community Manager sia agli utenti nuovi che a quelli già esistenti.

Puoi anche verificare le capacità assegnate a questo nuovo ruolo controllando il valore del campo wp_user_roles sotto la tabella wp_options all’interno del tuo database. Ecco cosa ho trovato nel database del mio sito:

array (
   'administrator' => 
   array (
     'name' => 'Administrator',
     [ … ]
   'editor' => 
     [ … ]
   'author' => 
     [ … ]
   'contributor' => 
     [ … ]
   'subscriber' => 
     [ … ]
   'anonymous' => 
     [ … ]
   'community_manager' => 
   array (
     'name' => 'Community Manager',
     'capabilities' => 
     array (
       'read' => true,
       'moderate_comments' => true,
       'edit_posts' => true,
       'edit_other_posts' => true,
       'edit_published_posts' => true,
     ),
   ),
 )

Elencato in fondo c’è il nuovo ruolo che abbiamo appena aggiunto con tutte le sue capacità. Puoi modificare ulteriormente questo ruolo aggiungendo o rimuovendo le capacità.

I migliori plugin per la gestione delle capacità dei ruoli

Saper modificare i ruoli e le capacità degli utenti con il codice è fantastico, ma non è per tutti e neppure dovrebbe esserlo. Ci sono così tante cose che possono andare male se non sei sicuro di quello che stai facendo. Tuttavia, sapere come funzionano i ruoli e le capacità in WordPress aiuta immensamente anche se stai usando un plugin.

Diamo un’occhiata ad alcuni dei più popolari plugin di WordPress per personalizzare facilmente i ruoli e le capacità degli utenti di WordPress. Elencherò anche alcuni plugin utili per testare velocemente ruoli e funzionalità.

User Role Editor di Vladimir Guragulia

La pagina del plugin User Role Editor
La cover del plugin dalla pagina nei repository ufficiali

User Role Editor è il plugin più popolare per la gestione dei ruoli e delle capacità del repository di WordPress. Viene fornito con una semplice interfaccia che permette a chiunque di modificare i ruoli e le capacità degli utenti con un solo click.

Dopo aver installato e attivato il plugin, puoi andare su Utenti > User Role Editor nella tua dashboard di amministrazione per accedere alla sua interfaccia primaria.

ruoli wordpress User Role Editor Dashboard

Ecco una panoramica dettagliata delle sezioni del pannello contrassegnate qui sopra:

  1. Seleziona il ruolo che vuoi personalizzare dal menu a tendina. Elencherà non solo i ruoli predefiniti ma tutti i ruoli presenti nel tuo database. Puoi anche scegliere di mostrare le capacità in forma leggibile dall’uomo piuttosto che le loro costanti. Un’altra opzione ti permette di vedere le capacità deprecate che non sono più supportate nell’ultima versione di WordPress.
  2. User Role Editor raggruppa tutte le capacità in categorie distinte a sinistra. La categoria Core include tutte le capacità incorporate. Da quando ho installato WPForms su questo sito, puoi trovare anche le funzionalità per i suoi form. Anche il plugin User Role Editor aggiunge il proprio set di funzionalità personalizzate.
  3. Sulla destra, troverai tutte le funzionalità elencate. Come ho selezionato il gruppo All, posso vedere tutte le funzionalità. Tuttavia, puoi filtrarle cliccando su un gruppo a sinistra. Puoi anche spuntare l’opzione Solo Concessi in alto per nascondere tutte le capacità che non sono usate da nessun ruolo utente.
  4. Puoi anche aggiungere un ruolo, rinominare un ruolo, aggiungere una capacità e cancellare un ruolo da qui. In fondo, troverai un’opzione aggiuntiva per nascondere la barra di amministrazione per il ruolo utente.

Per personalizzare qualsiasi ruolo utente, basta selezionare o deselezionare le funzionalità desiderate e fare clic sul pulsante Aggiorna per salvare le modifiche.

ruoli wordpress User Role Editor Aggiungi Ruolo
Aggiungere un ruolo con il plugin User Role Editor

Clicca sul pulsante Aggiungi ruolo per creare un nuovo ruolo. Puoi creare un ruolo da zero o duplicare un ruolo esistente usando l’opzione Fai copia del menu a tendina.

Puoi anche rinominare il Nome di visualizzazione del ruolo cliccando sul pulsante Rinomina ruolo. Tuttavia, non puoi cambiare il suo Role ID (o Role Name). Una soluzione è duplicare il ruolo di cui vuoi cambiare l’ID e poi cancellare il ruolo originale.

Puoi aggiungere nuove capacità cliccando sul pulsante Aggiungi capacità.

Cliccando sul pulsante Elimina Ruoli puoi cancellare i ruoli personalizzati che non hai assegnato a nessun utente.

Nota: L’Editor ruoli utente non ti permette di eliminare i ruoli o le capacità incorporate in WordPress. Inoltre non ti permette di cancellare alcun ruolo personalizzato se è assegnato a un qualsiasi utente, o qualsiasi capacità personalizzata se è assegnato a qualsiasi ruolo non amministratore.

Aggiungere ruoli multipli a un unico user
Per aggiungere ruoli multipli a un utente, dovrai usare il pannello degli utenti e cliccare su Capacità tra le opzioni rapide al passaggio del mouse.

Per assegnare a un utente più ruoli, devi andare nel pannello Utenti nella tua dashboard, e poi cliccare sul link Capacità che vedrai sotto al nome dopo averci passato il mouse sopra.

Se vai in Impostazioni > User Role Editor nella tua dashboard di amministrazione, troverai anche opzioni aggiuntive per il plugin.

Mentre la versione gratuita di User Role Editor è più che sufficiente per la maggior parte dei casi, la versione premium include ancora più funzionalità, incluso il supporto per la gestione dei ruoli e delle capacità nelle impostazioni di WordPress Multisite.

Members di MemberPress

LA cover del plugin nei repository ufficiali
La cover del plugin nei repository ufficiali

Members è un plugin per WordPress focalizzato sui ruoli e le capacità degli utenti e sulle funzionalità di WordPress. Lanciato originariamente come un semplice plugin per la gestione dei ruoli utente e delle capacità, da allora è stato orientato verso le funzioni di membership.

Pannello principale del plugin Members
Pannello principale del plugin Members

Dopo aver installato e attivato il plugin, puoi visualizzare tutti i ruoli disponibili dal pannello principale su Members > Ruoli nella tua dashboard.

Members ti permette di cancellare tutti i ruoli, inclusi i ruoli incorporati in WordPress, ad eccezione dell’Amministratore e del Ruolo di default. Puoi anche modificare e clonare i ruoli, così come elencare tutti gli utenti assegnati ad un ruolo specifico.

Pannello di editing di un ruolo
Pannello di editing di un ruolo

All’interno del pannello Modifica Ruolo, puoi concedere o negare esplicitamente le capacità ad un particolare ruolo spuntando e deselezionando le relative caselle di controllo. Puoi anche aggiungere una capacità personalizzata al ruolo da qui.

Cliccando sul link Aggiungi nuovo ruolo si accede ad una schermata simile dove è possibile creare un nuovo ruolo dandogli un nome di visualizzazione, un id, e il suo insieme di funzionalità.

Proprio come con User Role Editor, puoi usare Members per assegnare agli utenti ruoli multipli. Puoi anche impostare i permessi di contenuto per limitare i contenuti agli utenti con solo un certo ruolo.

Puoi impostare il tuo sito e il feed in modo che sia privato. Inoltre, puoi limitare l’accesso all’API REST di WordPress agli estranei facendo rispettare l’autenticazione.

Members si distingue dagli altri plugin per la gestione di ruoli e capacità con i suoi incredibili add-on. Ti aiutano ad aggiungere moltissime funzionalità aggiuntive al sito, come la privacy degli utenti e la gestione dei dati personali (GDPR), aggiungono funzionalità relative ai tag e alla categoria, stabiliscono la gerarchia dei ruoli e altro ancora.

Il pannello degli addon di Members
Il pannello degli addon di Members

Puoi integrare senza problemi il plugin Members con molti popolari plugin di WordPress. Per esempio, puoi usarlo per creare e gestire capacità personalizzate per il plugin Advance Custom Fields (ACF). Alcuni altri plugin con cui si integra sono Easy Digital Downloads, GiveWP e WooCommerce.

I componenti aggiuntivi su Members focalizzati sull’iscrizione (Pagamenti, Abbonamenti, Email Marketing e Protezione avanzata dei contenuti) sono disponibili solo nella sua versione premium.

Conclusioni

Credo di aver scritto anche troppo. Nonostante questa voglia essere una guida approfondita, credo che scendere in ulteriori dettagli per ogni singolo plugin disponibile sia eccessivo.

Pubblicherò altri articoli, invece, per approfondire al meglio ogni plugin in modo specifico.

Ti ricordo che ho un canale YouTube in cui parlo di WordPress e di Web Design, ho pubblicato anche dei video corsi su Udemy. Per ottenere degli sconti sui corsi, basterà iscriversi alla newsletter!

Se ti è piaciuto l’articolo, non dimenticare di iscriverti alla newsletter per restare aggiornato sui prossimi contenuti!

Ruoli WordPress Cover Articolo
Tabella dei Contenuti

Iscriviti alla newsletter

Tabella dei Contenuti
Giacomo Lanzi

Giacomo Lanzi

Dopo studi in psicologia e letteratura, dal 2010 mi sono dedicato alla grafica web e all'editing per testi universitari. Sono un content creator per il web dal 2012. Dopo un'esperienza di due anni come manager di un team italiano per una compagnia internazionale a Berlino, ho deciso di tornare alla libera professione e di dedicarmi del tutto al web. Oggi offro servizi come autore, content creator, grafico web e SEO expert. Mi caratterizzano un attitudine al pensiero critico, abilità nella guida di un team, la cura dei dettagli e l'impegno che metto in ogni progetto, siano essi personali o professionali.

Iscriviti alla newsletter
ottieni sconti e promozioni