I ruoli e le capacità utente di WordPress vi danno la possibilità di controllare ciò che gli altri utenti possono o non possono fare sul vostro sito. È possibile utilizzarli per gestire le azioni degli utenti, come la scrittura e la modifica di articoli, la creazione di nuove pagine, la moderazione dei commenti, l’installazione di plugin, l’aggiunta di nuovi utenti e molto altro ancora.

Comprendere i ruoli e i permessi degli utenti è essenziale per gestire qualsiasi sito WordPress. Per esempio, se state costruendo un sito per un cliente, non vorreste che vi modificassero o cambiassero il tema installato. Allo stesso modo, non è saggio lasciare che gli autori di un blog con più autori installino o rimuovano i plugin.

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

In questa ampia guida, imparerete cosa sono i ruoli utente di WordPress, le varie capacità offerte da WordPress, come modificare i ruoli utente esistenti, come gestire gli utenti su più siti e come creare nuovi ruoli con un nuovo set di capacità.

Pronti? Cominciamo!

Cosa Sono i Ruoli e le Capacità degli Utenti di WordPress?

I ruoli e le capacità sono il cuore della gestione degli accessi degli utenti in WordPress. Per capire quali sono i ruoli degli utenti in WordPress, è necessario prima sapere quali sono le capacità.

WordPress definisce qualsiasi azione che un utente può eseguire come Capacità. Ecco alcuni esempi di capacità disponibili in WordPress e di come sono referenziate nel suo codice:

Partendo dal nome, la maggior parte delle capacità sono autoesplicative. WordPress ha oltre 70 capacità integrate nel core.

Un Ruolo è un insieme di capacità che potete assegnare ad un utente. Ad ogni utente di WordPress deve essere assegnato un ruolo. Un utente può intraprendere solo le azioni che il suo ruolo gli garantisce.

Un 'Ruolo' è una raccolta di 'Capacità'.
Un ‘Ruolo’ è una raccolta di ‘Capacità’.

Nel grafico sopra riportato, ogni utente con il Ruolo 1 può leggere gli articoli, ma non può modificarli. Gli utenti con il Ruolo 2 possono sia leggere che modificare i post, ma non possono pubblicare post. Ogni utente con il Ruolo 3 può leggere, modificare e pubblicare i post, ma non può cancellare post, a differenza degli utenti del Ruolo 4, che possono cancellare i post.

Il pannello 'Aggiungere un nuovo utente' nella bacheca di WordPress
Il pannello ‘Aggiungi nuovo utente’ nella bacheca di WordPress

WordPress utilizza molte delle capacità native per definire i ruoli utente predefiniti. Ad esempio, concede agli amministratori e agli editor la possibilità di pubblicare pagine (publish_pages), ma non le assegna ai Subscriber e ai Contributor.

Il pannello 'Utenti' nella bacheca di WordPress
Il pannello ‘Utenti’ nella bacheca di WordPress

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

phpMyAdmin mostra dove il database di WP memorizza le capacità
phpMyAdmin mostra dove il database di WP memorizza le capacità

WordPress memorizza tutte le capacità basate sui ruoli nel suo database, nella tabella wp_options, nell’opzione serializzata wp_user_roles. La classe core di WP_Roles è utilizzata per definire come memorizzare ruoli e capacità nel database.

La Classe WP_Roles

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

Se si sbircia nel database, si scopre che i ruoli sono all’interno di un array in cui sono definiti i nomi dei ruoli. La chiave rolename memorizza il nome del ruolo dell’utente come valore della chiave del name e tutte le capacità in un array separato come valore della chiave di 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 la User Roles API.

Nota: WordPress include un’altra classe core chiamata WP_Role (si noti il singolare ‘Role’). È utilizzata per estendere la User Roles API.

Se deserializzate il valore della chiave wp_user_roles, vedrete 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,
    ),
  ),
)

Si tratta di un array multidimensionale in cui ad ogni ruolo viene assegnato un nome e un insieme di capacità. Allo stesso modo, WordPress memorizza le capacità basate sull’utente nella tabella wp_usermeta in corrispondenza della metakey wp_capabilities.

Nota: Il prefisso wp_ può essere diverso nella vostra configurazione. Dipende dal valore della variabile globale $table_prefix nel filewp-config.php del vostro sito.

Grafico Ruoli e Capacità

Il grafico 'Ruoli e capacità' nel Codex di WordPress
Il grafico ‘Ruoli e capacità’ nel Codex di WordPress

Il Codex di WordPress offre una semplice tabella di confronto tra Ruoli e Capacità, anche se questa non è così intuitiva. Riassume tutte le azioni che i ruoli utente predefiniti possono svolgere sia nelle configurazioni WordPress singole che in quelle multisite. C’è un’interruzione dopo un certo numero di capacità per facilitare la distinzione tra capacità di alto e basso livello.

Per una migliore colpo d’occhio di tutti i ruoli e le capacità di WordPress, è possibile visualizzare questa eccellente tabella di Exygy.

Capacità Relative ai Blocchi Riutilizzabili di Gutenberg

L’editor di blocchi di WordPress Gutenberg ha introdotto una funzionalità sorprendente chiamata Blocchi Riutilizzabili. Questa permette di salvare un intero blocco (o più blocchi) come modello e di utilizzarlo in qualsiasi altro punto del sito.

Aggiungere 'Blocchi riutilizzabili' nel nuovo editor di blocchi di WordPress, Gutenberg
Aggiungere ‘Blocchi riutilizzabili’ nel nuovo editor di blocchi di WordPress, Gutenberg

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

  • Creare blocchi riutilizzabili
  • Modificare blocchi riutilizzabili
  • Leggere blocchi riutilizzabili
  • Cancellare 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 Author può solo modificare o cancellare i blocchi riutilizzabili da lui stesso creati. I Contributor possono solo leggere i blocchi riutilizzabili.

Capacità Speciale: Upload non Filtrato

L’Upload non filtrato è una capacità speciale che di default non è assegnata ad alcun ruolo utente, compresi Administrator o Super Admin. Permette ad un utente di caricare file con qualsiasi estensione (ad esempio SVG o PSD), non solo quelli consentiti da WordPress.

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

Per abilitare questa capacità, è necessario aggiungere il seguente frammento di codice al file wp-config.php. Definite la costante prima della riga che chiede di interrompere la modifica.

define( 'ALLOW_UNFILTERED_UPLOADS', true );

Dopo aver definito questa costante, potete assegnare a qualsiasi ruolo utente, su un sito WordPress singolo, la capacità di Upload non filtrato. Tuttavia, su un’installazione Multisite, solo un Super Admin può avere questa capacità.

Ad esempio, se volete assegnare la capacità unfiltered_upload ad un Editor, potete aggiungere il seguente codice in qualsiasi punto del vostro codice di WordPress (preferibilmente solo all’attivazione del tema/plugin):

<?php

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

?>

Più avanti in questo post vedremo come aggiungere o personalizzare le capacità di tutti i ruoli utente o di utenti specifici.

Capacità Primitive e Meta Capacità

Ci sono principalmente due tipi di capacità in WordPress:

  • Capacità primitive: Queste capacità sono concesse a ruoli particolari. Gli utenti con questi ruoli ereditano automaticamente le capacità primitive.
  • Meta Capacità: Queste capacità de default non sono concesse ad alcun ruolo. 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.

Ad esempio, WordPress concede agli Author la capacità edit_posts per i loro post in modo che possano modificarli. Tuttavia, questa capacità non permette loro di modificare i post di altri utenti. È qui che entrano in gioco le meta capacità.

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

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

I Sei Ruoli Utente Predefiniti di WordPress

WordPress include sei ruoli utente predefiniti. Il primo utente di un’installazione WordPress ottiene di default il ruolo di Administrator (o il ruolo di Super Admin nelle installazioni WordPress Multisite).

Da quando WordPress ha iniziato come piattaforma di blogging, prima di diventare 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, Author, Contributor e Subscriber.

I ruoli utente di default di WordPress disposti in ordine di capacità
I ruoli utente di default di WordPress disposti in ordine di capacità

Immaginate i ruoli utente predefiniti di WordPress come una collezione di cilindri impilati che rappresentano varie capacità. Il cilindro più grande ha il maggior numero di capacità, il secondo ne ha un po’ di meno e il più piccolo ha il minor numero di capacità.

Non dovreste considerare un ruolo superiore a un altro. Piuttosto, pensate ai ruoli come regole che stabiliscono le responsabilità di un utente all’interno del sito.

Il ruolo utente non è mai superiore, né inferiore, ma definisce con precisione ciò a cui è destinato.

Ora esaminiamo in dettaglio tutti i ruoli utente predefiniti di WordPress.

Administrator

La bacheca del ruolo 'Administrator' in WordPress
La bacheca del ruolo ‘Administrator’ in WordPress

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

  • Creare e cancellare utenti
  • Installare e gestire plugin e temi
  • Modificare plugin, temi, file e codice
Di default, solo gli Administrator possono aggiungere nuovi utenti in WordPress
Di default, solo gli Administrator possono aggiungere nuovi utenti in WordPress

Dato che quello di Administrator è il ruolo più potente, è opportuno assegnarlo solo a coloro di cui ci si fida. In teoria, ci dovrebbe essere un solo amministratore per sito.

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

Editor

La bacheca del ruolo 'Editor' in WordPress
La bacheca del ruolo ‘Editor’ in WordPress

Un Editor si occupa della gestione dei contenuti di un sito WordPress. Può creare, modificare, pubblicare o cancellare post e pagine, anche create da altri utenti. Alcune delle 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 Editor non possono eseguire 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 costituire un team di una sola persona per i contenuti.

Suggerimento: se gestite un sito WordPress da soli, potete creare un utente alternativo con il ruolo di Editor. In questo modo potete tenere separati i vostri compiti di amministrazione e quelli di pubblicazione. Il vostro account di amministratore è al sicuro dagli hacker anche se il vostro account di Editor viene compromesso.

Autore

La bacheca del ruolo 'Author' in WordPress
La bacheca del ruolo ‘Author’ in WordPress

Come suggerisce il nome, qualsiasi utente con un ruolo ‘Author’ può creare, modificare e pubblicare post. Può anche caricare file multimediali e cancellare i propri post, ma non può creare pagine o modificare i post di altri.

Gli autori possono aggiungere tag ai loro post e assegnare i loro post alle categorie esistenti, ma non possono creare nuove categorie. Come per gli editor, non hanno accesso ad alcuna azione di amministrazione, come le impostazioni, i plugin e i temi.

Nota: un autore può cancellare i suoi post anche dopo la pubblicazione. Se state assegnando a qualcuno il ruolo di Author, assicuratevi che vi vada bene che abbia il completo controllo dei suoi post, inclusa la cancellazione.

Contributor

La bacheca del ruolo 'Contributor' in WordPress
La bacheca del ruolo ‘Contributor’ in WordPress

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.

Possono salvare le bozze dei loro messaggi o inviarle a un redattore 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 gli ospiti.

Subscriber

La bacheca del ruolo 'Subscriber' in WordPress
La bacheca del ruolo ‘Subscriber’ in WordPress

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

Limitare i contenuti di WordPress solo a specifici ruoli utente
Potete limitare i contenuti di WordPress solo a specifici ruoli utente

Di solito, tutti hanno accesso alla lettura dei contenuti su un sito WordPress. Tuttavia, nei siti ad iscrizione o di affiliazione, solo gli utenti registrati possono visualizzare i contenuti. Un utente con un ruolo di Subscriber in questi casi può leggere i post.

Super Admin

La bacheca del ruolo 'Super Admin' in un network Multisite di WordPress
La bacheca del ruolo ‘Super Admin’ in un network Multisite di WordPress

Il ruolo di Super Admin è disponibile solo nelle installazioni WordPress Multisite. Questo ruolo sostituisce i singoli Admin all’interno della rete Multisite e dà accesso a tutte le capacità di amministrazione di alto livello.

Alcune capacità Multisite disponibili per i Super Admin sono disponibili solo per i Super Admin:

  • Creare, gestire e cancellare siti della rete
  • Gestire utenti di rete, plugin, temi e opzioni
  • Aggiornare tutti i siti della rete Multisite
  • Creare una rete multisite
  • Assegnare gli amministratori ai singoli siti della rete
Il pannello 'Siti' in una rete WordPress Multisite
Il pannello ‘Siti’ in una rete WordPress Multisite
Il pannello "Temi" nel cruscotto del Super Admin
Il pannello “Temi” nel cruscotto del Super Admin

In una rete Multisite, solo il Super Admin può installare i temi e abilitarli su tutta la rete. Gli amministratori dei singoli siti della rete possono visualizzare e attivare solo i temi già installati dal Super Admin.

Per esempio, ho installato il tema gratuito Astra sul mio network, ma non l’ho abilitato per la rete. Pertanto, gli amministratori dei singoli sottositi della rete non possono vederlo nell’elenco del loro pannello dei temi.

Gli amministratori dei sottositi della rete non possono installare nuovi temi
Gli amministratori dei sottositi della rete non possono installare nuovi temi

Nella schermata precedente si può anche notare che il menu Plugins non è accessibile agli amministratori di un sito del network. A differenza di quanto avviene per i Temi, un Super Admin può modificare le impostazioni del network per consentire agli Admin di installare e attivare i plugin sui loro siti.

I Super Admin possono abilitare l'amministrazione dei plugin per gli amministratori dei sottositi
I Super Admin possono abilitare l’amministrazione dei plugin per gli amministratori dei sottositi
Il Super Admin può anche attivare i plugin sul network.
Il Super Admin può anche attivare i plugin sul network.

Un Super Admin può anche attivare i plugin sul network (Network Activate) per fare in modo che siano forzati in tutti i siti della rete. Gli amministratori del sito non possono disattivare i plugin attivati sul network. Questa impostazione è ideale per applicare i plugin essenziali in tutta la rete.

La Schermata di Amministratore del Network

La dashboard di Amministratore del Network funziona da hub centrale per il Super Admin per gestire le capacità del network di WordPress Multisite. È accessibile solo agli utenti con il ruolo di Super Admin dopo aver creato una rete.

La bacheca di Amministratore del Network include opzioni uniche per gestire la rete
La bacheca di Amministratore del Network include opzioni uniche per gestire la rete
1. Bacheca

La bacheca di Amministratore del Network è l’hub centrale contenente informazioni dettagliate sui siti del network. Vi dà accesso a tutte le vostre impostazioni di rete.

2. Siti
Il pannello 'Siti' in una dashboard di Amministratore del Network
Il pannello ‘Siti’ in una dashboard di Amministratore del Network

Potete utilizzare il Pannello dei Siti per gestire i vari siti che fanno parte della rete Multisite. I siti qui elencati saranno una sottodirectory o un sottodominio a seconda di come avete configurato la vostra rete WordPress Multisite.

Da qui, potete aggiungere nuovi siti alla rete o rimuovere i siti esistenti dal network.

Da qui è possibile accedere anche alle informazioni su siti, utenti, temi e impostazioni generali del network. Il primo sito creato è il sito principale della rete. La rete eredita tutte le sue impostazioni dalla configurazione del primo sito.

Aggiungere nuovi siti alla rete WordPress Multisite

Facendo clic sul link o sul pulsante Aggiungi nuovo sito, giungerete alla schermata precedente, dove potrete aggiungere un nuovo sito alla vostra rete Multisite. Se non avete nessun altro in mente come amministratore del nuovo sito, potete assegnare anche voi stessi il ruolo di amministratore.

3. Utenti
Il pannello 'Utenti' nel cruscotto di Amministratore del Network
Il pannello ‘Utenti’ nel cruscotto di Amministratore del Network

La schermata Utenti nela bacheca di Amministratore del Network consente di gestire gli utenti e di aggiungerne di nuovi alla rete multisite. Solo il Super Admin può aggiungere utenti alla rete, ma un Super Admin può anche modificare le impostazioni di rete per consentire agli amministratori del sito di aggiungere nuovi utenti solo ai propri siti.

4. Temi
Il pannello 'Temi' nella bacheca di Amministratore del Network
Il pannello ‘Temi’ nella bacheca di Amministratore del Network

La schermata Temi consente di gestire i temi accessibili agli amministratori dei siti. Non consente di attivare o disattivare i temi utilizzati da qualsiasi sito, ma solo di impostare i temi che qualsiasi sito può utilizzare.

Se disattivate un tema che è in uso in qualsiasi punto della rete, rimarrà attivo su quel sito anche dopo averlo disattivato. Ma se i siti utilizzano un altro tema, allora il tema disabilitato non apparirà nel pannello dei temi del sito del network.

Potete fare riferimento all’articolo su WordPress Multisite di Kinsta per imparare a lavorare con i temi e i plugin della vostra rete. È anche possibile utilizzare l’Editor dei temi per modificare i file dei temi all’interno della bacheca stessa.

5. Plugin
Il pannello 'Plugins' nella bacheca di Amministratore del Network
Il pannello ‘Plugins’ nella bacheca di Amministratore del Network

La schermata Plugin consente agli utenti di aggiungere o cancellare i plugin nella rete. Una volta aggiunti, potrete attivare i plugin dalla bacheca di un sito. Potete anche attivare i plugin del network da qui per forzare l’utilizzo del plugin su tutti i siti della rete.

Di default, un amministratore del sito non può accedere al menu Plugin della propria dashboard. Un Super Admin può abilitarlo per loro modificando le impostazioni della rete.

Abilitazione dell'amministrazione dei plugin per tutti gli amministratori del sottosito
Abilitazione dell’amministrazione dei plugin per tutti gli amministratori del sottosito

Nota: non tutti i plugin di WordPress supportano le reti multisite. È necessario leggere la documentazione del plugin per verificare se funzioni in configurazioni Multisite.

6. Impostazioni
Il pannello 'Impostazioni' nella bacheca di Amministratore del Network
Il pannello ‘Impostazioni’ nella bacheca di Amministratore del Network

È possibile definire e modificare le impostazioni per l’intera rete nella schermata Impostazioni di Rete. Le impostazioni predefinite della rete si basano sul primo sito creato durante la configurazione del network. Alcune impostazioni di rete che potete modificare qui sono le seguenti:

  • Impostazioni Operative
  • Impostazioni Registrazione
  • Impostazioni Nuovo Sito
  • Impostazioni di Upload
  • Impostazioni Lingua
  • Impostazioni del Menu

Qui si può anche accedere alle informazioni di Configurazione della Rete che avete utilizzato quando avete creato il network. Potete far riferimento alla schermata Impostazioni di Amministratore del Network nel Codex di WordPress per avere una panoramica dettagliata di tutte le opzioni di configurazione disponibili.

7. Aggiornamenti
Il pannello 'Aggiornamenti' nel cruscotto di amministrazione della rete
Il pannello ‘Aggiornamenti’ nel cruscotto di Amministratore del Network

È possibile controllare la procedura di aggiornamento sia per la rete che per i singoli siti dalla schermata degli aggiornamenti. Il pannello Aggiornamenti vi mostrerà tutti gli aggiornamenti disponibili per il Core di WordPress, i temi e i plugin. Una volta installata l’ultima versione di WordPress, è possibile applicarla a tutti i siti della rete dalla schermata Aggiorna Rete.

Il pannello "Aggiorna Rete" nel cruscotto di Amministratore del Network
Il pannello “Aggiorna Rete” nel cruscotto di Amministratore del Network

Nota: in un’installazione singola di WordPress, l’amministratore è essenzialmente un Super Admin in quanto ha accesso a tutte le funzionalità di amministrazione.

Potete personalizzare i ruoli utente e anche creare i vostri ruoli personalizzati utilizzando le capacità predefinite di WordPress.

I Vantaggi dei Ruoli e delle Capacità Utente

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

  • I ruoli utente vi aiutano a gestire in modo più efficiente tutti gli utenti del vostro sito. Anche se avete decine di utenti sul vostro sito che lavorano da diverse parti del mondo, potete supervisionarli facilmente concedendo i ruoli giusti a ciascuno di loro.
  • Limitare gli utenti a capacità specifiche, vi permette di mantenere il vostro sito più sicuro. Ad esempio, gli Author non possono cancellare i post altrui, gli Editor non possono modificare i temi o installare plugin, e i Subscriber possono accedere solo ai propri profili.
  • I plugin di WordPress possono verificare se un utente ha determinate capacità e, sulla base di queste, eseguire una determinata azione. La funzione current_user_can() di WordPress permette di eseguire questo controllo. Ad esempio, un plugin di sicurezza può mostrare il suo pannello delle opzioni solo all’amministratore, ma mostrare comunque gli avvisi di sicurezza a tutti gli utenti.
  • Potete modificare i ruoli utente in modo da delegare alcune delle vostre responsabilità di ruolo ad altri utenti per liberare il vostro tempo. Diciamo che il vostro sito attira un sacco di commenti. In questi casi, potete permettere ad un autore di fiducia di moderare i commenti. Manterrete comunque il massimo controllo come amministratore, ma potrete condividere alcune delle vostre responsabilità a seconda delle necessità.
  • Potrete utilizzare i controlli sulle capacità per mostrare i messaggi privati e le pagine che solo alcuni ruoli utente possono visualizzare. Questo costituisce la base dei siti ad iscrizione.
  • Potete mostrare o nascondere elementi del frontend sul vostro sito (ad es. voci di menu e widget) a seconda del ruolo dell’utente.
  • Potete creare tipi di post personalizzati con capacità specifiche e concedere o negare tali capacità per ogni ruolo utente. Allo stesso modo, è anche possibile definire capacità personalizzate per consentire solo ad alcuni ruoli di accedere alle impostazioni dei plugin o dei temi.

Come Gestire Efficacemente i Ruoli degli Utenti di WordPress

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

Garantire un Accesso Minimo ad Ogni Utente

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

Assegnate i ruoli utente con attenzione
Assegnate i ruoli utente con attenzione

Limitare il Numero di Amministratori ed Editor

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

Per esempio, è meglio utilizzare un utente di livello Editor per gestire i contenuti del sito, piuttosto che un Admin. Se avete più di un Editor sul vostro sito, allora assicuratevi di potervi fidare date le loro ampie capacità.

Assegnate il ruolo di Autore ai creatori di contenuti di cui vi potete fidare, in quanto possono pubblicare e cancellare i propri post. I ruoli di Contributor si adattano meglio ai nuovi creatori di contenuti e di guest post.

Personalizzare i Ruoli degli Utenti a Seconda delle Esigenze

I ruoli utente predefiniti di WordPress sono utili, ma potrebbero non essere adatti a tutti i casi. Per esempio, dando ai vostri Author la possibilità di moderare i commenti.

Per fortuna, WordPress ci dà la possibilità di personalizzare i ruoli degli utenti o di creare nuovi ruoli in base alle nostre esigenze specifiche. Potete farlo manualmente attraverso il codice, oppure con l’aiuto dei plugin per la gestione dei ruoli utente di WordPress. Tratteremo entrambi i metodi in questo articolo.

Gestire gli Utenti su un Network Multisite di WordPress

WordPress Multisite dispone di impostazioni uniche per la gestione degli utenti. Alcune di esse sono semplici da comprendere, altre non tanto.

Esploriamole in profondità.

Impostazioni di Registrazione in una Rete Multisite

Di default, solo un Super Admin può creare nuovi utenti e siti sulla rete. Tuttavia, questo può consentire agli utenti di registrare gli account sulla rete come Subscriber dei sottositi.

Per abilitare questa funzione, andate in Amministratozione di Rete > Impostazioni di rete > Impostazioni di Registrazione > Consenti Nuove Registrazioni e attivate l’opzione “Gli account utente possono essere registrati”.

Permettere agli utenti di registrare un account sulla vostra rete
Permettere agli utenti di registrare un account sulla vostra rete

Qui potete anche permettere agli utenti registrati di creare nuovi siti sulla vostra rete. Potete selezionare questa opzione se volete limitare la possibilità di creare siti solo per gli utenti da voi impostati.

L’ultima opzione permette agli utenti di registrare un account e di creare un sito sulla rete. Agli utenti che creano un sito sulla vostra rete viene assegnato il ruolo di Amministratore per il proprio sottosito.

Un Account Utente per Accedere all’Intera Rete

Quando si crea un account utente sulla propria rete, o quando un utente registra un account su uno qualsiasi dei siti della rete, dopo aver effettuato il login può navigare verso qualsiasi sito all’interno della rete. Immaginatelo come un social network come Facebook o Reddit, dove potete creare un account e accedere a tutti i gruppi o subreddit con lo stesso profilo utente.

Questo è uno dei maggiori vantaggi dell’utilizzo di WordPress Multisite. Permette ai vostri utenti di accedere a tutti i siti registrando un solo account.

Concedere Privilegi Extra agli Amministratori del Sito

È possibile consentire agli amministratori del sito di aggiungere utenti ai propri siti selezionando l’opzione Aggiungi nuovi utenti.

Permettere agli amministratori del sito di aggiungere nuovi utenti al proprio sottosito
Permettere agli amministratori del sito di aggiungere nuovi utenti al proprio sottosito

Come accennato in precedenza, è possibile concedere agli amministratori dei siti l’accesso alla gestione dei plugin sui rispettivi sottositi andando in Impostazioni di Rete > Impostazioni Menu e selezionando l’opzione Abilita menu di amministrazione > Plugin.

Registrazione Utenti a Livello di Sotto-sito

Le installazioni di WordPress Multisite consentono di default solo le registrazioni degli utenti per l’intera rete. Non è possibile abilitare le registrazioni degli utenti per un solo sotto-sito. Potete modificare questo comportamento utilizzando il plugin Network Subsite User Registration.

Il plugin 'Network Subsite User Registration'
Il plugin ‘Network Subsite User Registration’

Questo plugin permette agli amministratori dei siti di abilitare le registrazioni degli utenti locali con accesso limitato solo al proprio sito. I nuovi utenti assumeranno di default il ruolo di Subscriber, ma è possibile modificarlo cambiando le impostazioni del plugin.

Permettere a chiunque di registrare un account solo sui sotto-siti
Permettere a chiunque di registrare un account solo sui sotto-siti

Assegnare lo Stesso Utente a Più Sottositi

Potete assegnare lo stesso utente a più siti della vostra rete con ruoli unici. Quando l’utente accede alla dashboard dei suoi siti, può accedere alla dashboard di tutti i suoi siti attraverso la schermata I miei siti.

È possibile assegnare un utente a più siti in una rete WordPress Multisite
È possibile assegnare un utente a più siti in una rete WordPress Multisite

Concedere ad Altri Utenti i Privilegi di Super Admin

Un Super Admin può anche condividere i propri privilegi con altri utenti. Dovreste abilitare questa opzione con cautela e assegnarla solo agli utenti di cui vi potete fidare.

Concedere ad altri utenti i privilegi di Super Admin per la rete
Concedere ad altri utenti i privilegi di Super Admin per la rete

Comprendere tutte le impostazioni di gestione degli utenti in WordPress Multisite vi aiuterà a gestire meglio la vostra rete. Per trovare altri plugin utili per WordPress Multisite, potete esplorare la repo di WordPress o leggere l’articolo di Kinsta sui plugin raccomandati di WordPress Multisite.

Come Personalizzare i Ruoli Utente di WordPress Esistenti

È possibile aggiungere capacità ai ruoli utente esistenti per aumentare il loro livello di accesso. Ad esempio, potreste dare agli editor la possibilità di gestire i plugin. Potreste anche volere che i Contributor possano moderare i commenti sui propri post. Vediamo come fare.

Nota: Se non vi piace divertirvi con il codice, potete saltare il metodo manuale e passare direttamente alla sezione dei plugin per la gestione dei ruoli e delle capacità utente che trovate qui sotto. Ma potete semplicemente assumere uno sviluppatore WordPress.

Come Aggiungere Capacità a un Ruolo Utente

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

<?php

/*
Plugin Name:  Customize User Role
Version:  1.0
Description:  Demonstrating how to customize WordPress User Roles.
Author:  Salman Ravoof
Author URI:  https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  customize-user-role
*/

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

Dato che sto utilizzando 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 qui ricorro ad una solida implementazione basata su classi per essere sicuro che non ci siano conflitti.

// this code runs only during plugin activation and never again
function sal_customize_user_role() {
    require_once plugin_dir_path( __FILE__ ).'includes/class-sal-customize-user-role.php';   
    Sal_Customize_User_Role::activate();
}
register_activation_hook( __FILE__, 'sal_customize_user_role' );

Il codice di cui sopra viene eseguito una sola volta al momento dell’attivazione del plugin. La funzione agganciata sal_customize_user_role fa riferimento ad una classe personalizzata chiamata Sal_Customize_User_Role.

Ho definito questa classe in un file separato chiamato class-sal-customize-user-role.php e l’ho inserita nella cartella principale del plugin, all’interno di una sottocartella chiamata includes, ma potete chiamarla come volete.

<?php

class Sal_Customize_User_Role {
    public static function activate() {
        // get the Editor role's object from WP_Role class
        $editor = get_role( 'editor' );

        // a list of plugin-related capabilities to add to the Editor role
        $caps = array(
                  'install_plugins',
                  'activate_plugins',
                  'edit_plugins',
                  'delete_plugins' 
        ); 

        // add all the capabilities by looping through them
        foreach ( $caps as $cap ) {
            $editor->add_cap( $cap );
        }
    }
}

Ecco una spiegazione dettagliata del codice qui sopra:

  • Iniziate definendo la classe e la sua funzione a cui avete fatto riferimento nel file principale del plugin.
  • La funzione get_role( ‘editor’ ) recupera l’oggetto del 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. Tuttavia, la funzione add_cap() accetta solo un parametro. Quindi, dobbiamo includere tutte le capacità all’interno di un array. Definite l’array $caps in modo che contenga tutte queste capacità. Se aggiungete una sola capacità, allora non c’è bisogno di definire un array.
  • La funzione add_cap( $cap ) aggiunge tutte le capacità definite nell’array $caps, facendole passare in loop utilizzando la funzione PHP foreach ().

Salvate tutti i file del vostro plugin e poi attivate il plugin dalla vostra dashboard di amministrazione. Ora accediamo alla dashboard dell’Editor per vedere le modifiche.

Gli editor possono ora gestire i plugin dalla loro bacheca
Gli editor possono ora gestire i plugin dalla loro bacheca

Dopo aver aggiunto le capacità relative ai plugin al ruolo utente, gli editor possono vedere il menu dei plugin nel proprio menu di amministrazione.

La schermata 'Aggiungi plugin' nel cruscotto dell'Editor
La schermata ‘Aggiungi plugin’ nel cruscotto dell’Editor

Potete controllare le capacità assegnate ad ogni ruolo utente dal valore della chiave wp_user_roles memorizzato nella tabella wp_options del database del vostro sito WordPress.

Ecco le capacità che sono ora assegnate al ruolo di Editor:

'editor' =>
  array (
    'name' => 'Editor',
    'capabilities' => 
    array (
      'moderate_comments' => true,
      'manage_categories' => true,
      // [...lines cut off for brevity...]
      'install_plugins' => true,
      'activate_plugins' => true,
      'edit_plugins' => true,
    ),
  ),

Notate le ultime tre righe che danno agli editor la possibilità di gestire i plugin.

Se volete rimuovere queste capacità, potete agganciarvi alla funzione register_deactivation_hook() e utilizzare la funzione remove_cap() per rimuovere le capacità alla disattivazione del plugin, proprio come abbiamo aggiunto le capacità al’attivazione del plugin.

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

Nota: è anche possibile agganciarsi all’azione after_switch_theme per lanciare questo codice durante l’attivazione del tema (e/o del child theme). Qui, è necessario includere il codice nel file functions.php del tema o del child theme (consigliato).

Come rimuovere le capacità da un ruolo utente

A volte, potreste voler rimuovere una capacità da un ruolo utente. Potete eseguire la funzione remove_cap() per rimuovere una capacità da un ruolo o da un utente specifico. Ad esempio, è un’ottima idea quella di rimuovere la capacità delete_published_posts dal ruolo utente Author.

Diamoci da fare!

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

<?php

/*
Plugin Name:  Customize Author Role
Version:  1.0
Description:  Demonstrating how to customize WordPress Author Role.
Author:  Salman Ravoof
Author URI:  https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  customize-author-role
*/

// this code runs only during plugin activation and never again
function sal_customize_author_role() {
    require_once plugin_dir_path( __FILE__ ).'includes/class-sal-customize-author-role.php';
    Sal_Customize_Author_Role::activate();
}
register_activation_hook( __FILE__, 'sal_customize_author_role' );

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

<?php
class Sal_Customize_Author_Role { 
    public static function activate() {
        // get the Editor role's object from WP_Role class
        $author = get_role( 'author' );
 
        // remove the capability to delete published posts from an Author role
        $author->remove_cap( 'delete_published_posts' );
    }
}

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

Di default, gli autori sono autorizzati a cancellare i loro messaggi pubblicati
Di default, gli autori sono autorizzati a cancellare i loro messaggi pubblicati

È il momento di salvare tutti i file del plugin e poi attivarlo. Ora, accedete alla bacheca dell’autore e verificate le modifiche.

Gli autori non possono più cancellare i post pubblicati
Gli autori non possono più cancellare i post pubblicati

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

Gli autori possono ancora cancellare i propri post non pubblicati
Gli autori possono ancora cancellare i propri post non pubblicati

Se volete disabilitare anche questa capacità, allora bisogna anche rimuovere la capacità delete_posts dal ruolo Author.

Aggiungere o Rimuovere Capacità per Utenti Specifici

Se volete aggiungere capacità ad un utente specifico, invece di un intero ruolo utente, allora potete utilizzare la funzione di classe WP_User::add_cap() per aggiungere la capacità.

// get the user object by their ID
$user = new WP_User( $user_id ); 

// add the capability to the specific user
$user->add_cap( $cap );

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

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

// get the user object by their ID
$user = new WP_User( $user_id );

// add the capability to the specific user
$user->add_cap( $cap );

Come prima, eseguite queste funzioni solo all’attivazione di plugin o di temi per ottimizzare il codice.

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

Duplicare un Ruolo Utente

Potete creare un nuovo ruolo utente clonando tutte le capacità di un ruolo utente esistente. Ecco come fare:

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

Nell’esempio precedente, creo un nuovo ruolo chiamato Clone con le stesse capacità di un Amministratore. L’esecuzione di questo codice all’attivazione del tema o del plugin farà sì che il ruolo clonato venga aggiunto una sola volta.

Come Creare Ruoli Utente Personalizzati in WordPress

Le capacità dei ruoli utente predefiniti possono essere personalizzate velocemente. Ma se volete modificare molte capacità di un ruolo, allora è una buona idea creare un nuovo ruolo utente personalizzato. In questo modo potete impostare le capacità esatte che desiderate assegnare ad ogni ruolo sul vostro sito.

Per creare un ruolo utente personalizzato, è necessario utilizzare la funzione add_role(). Questa accetta tre parametri.

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

I primi due parametri devono essere stringhe (e sono obbligatori). Essi definiscono rispettivamente il nome del nuovo ruolo personalizzato e il nome a video. L’ultimo parametro è facoltativo e deve essere un array. Potete utilizzarlo per assegnare tutte le capacità al 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 fare:

<?php

/*
Plugin Name:  Add Community Manager Role
Version:  1.0
Description:  Add a Custom User Role called 'Community Manager'
Author:  Salman Ravoof
Author URI:  https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  add-community-manager-role
*/

// this code will run only once on plugin activation and never again
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 in precedenza, la funzione add_role() viene eseguita una sola volta all’attivazione del plugin e mai più. Salvate il file e attivate il plugin nella bacheca da amministratore. Ora dovreste essere in grado di assegnare il ruolo di Community Manager sia ai nuovi utenti che a quelli già esistenti.

Assegnazione del ruolo utente personalizzato ai nuovi utenti
Assegnazione del ruolo utente personalizzato ai nuovi utenti
Assegnazione del ruolo utente personalizzato agli utenti esistenti
Assegnazione del ruolo utente personalizzato agli utenti esistenti

Potete anche verificare le capacità assegnate a questo nuovo ruolo controllando il valore del campo wp_user_roles, nella tabella wp_options del vostro database. Ecco cosa ho trovato nel database del mio sito:

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

In fondo è visibile il nuovo ruolo che abbiamo appena aggiunto con tutte le sue capacità. Potete modificare ancora questo ruolo aggiungendo o rimuovendo capacità.

Provare un Nuovo Ruolo Utente

Prima di assegnare il nuovo ruolo di utente ad un qualsiasi utente reale, è indispensabile verificare se funziona come previsto. Ecco una checklist da seguire per testare il ruolo:

  1. Create un account utente di prova e assegnargli il nuovo ruolo di utente.
  2. Effettuate il login con l’utente da testare e assicuratevi che tutte le sue capacità funzionino come previsto. Ad esempio, se avete concesso la possibilità di modificare i post pubblicati, allora andate su un qualsiasi post e verificate se potete modificarlo. Più capacità avete assegnato al ruolo, più tempo ci vorrà per testarli tutti.
  3. Successivamente, provate a visitare qualsiasi link di amministrazione di livello superiore direttamente nel vostro browser. L’ho testato visitando direttamente la schermata delle impostazioni di WordPress e, come previsto, WordPress non mi ha fatto entrare.
  4. Cancellate l’utente del test dopo aver concluso la prova.

Più o meno è tutto qui! Ora potete assegnare il nuovo ruolo agli utenti del vostro sito.

Potete utilizzare i plugin User Switching o View Admin As per passare da un account utente del sito all’altro con un solo clic. Sono utilissimi per testare le capacità di più utenti. Li ho descritti entrambi in dettaglio più avanti in questo articolo.

Creare Ruoli Utente Personalizzati in WordPress Multisite

WordPress Multisite gestisce i ruoli degli utenti in modo leggermente diverso rispetto alle installazioni single-site di WordPress. Anche se è possibile utilizzare la funzione add_role() per creare un ruolo utente personalizzato come abbiamo fatto prima, il nuovo ruolo funzionerà solo sul sito principale della rete (il primo sito creato). Non si propagherà a tutti i sottositi della rete.

Per garantire che il codice all’interno della vostra funzione di callback venga eseguito su ogni sito della rete, dovete forzarne l’esecuzione facendo il looping di tutti i siti della rete uno per uno. Per questo esempio, creerò un nuovo ruolo utente chiamato Plugin Manager che avrà tutte le capacità per gestire i plugin.

<?php

/*
Plugin Name:  Add Plugin Manager Role
Version:  1.0
Description:  Add a custom user role named Plugin Manager in a WordPress Multisite Installation
Author:  Salman Ravoof
Author URI:  https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  add-plugin-manager-role
*/

/* 
make the code run on every site in the network
when the plugin is Network Activated
*/
function add_plugin_manager_role( $network_wide ) {
 
     if ( is_multisite() && $network_wide ) { 
         // run the code for all sites in a Multisite network
         foreach ( get_sites(['fields'=>'ids']) as $blog_id ) {
             switch_to_blog( $blog_id );
                 add_role(
                      'plugin_manager',
                      __('Plugin Manager', 'add-plugin-manager-role'),
                      array( 
                           'install_plugins' => true,
                           'activate_plugins' => true,
                           'edit_plugins' => true,
                           'delete_plugins' => true
                      )
                 );
             }
             restore_current_blog();
     }
     else {
         add_role(
              'plugin_manager',
              __('Plugin Manager', 'add-plugin-manager-role'),
              array( 
                   'install_plugins' => true,
                   'activate_plugins' => true,
                   'edit_plugins' => true,
                   'delete_plugins' => true
              )
         );
     }
}
register_activation_hook( __FILE__, 'add_plugin_manager_role' );

Esaminiamo in dettaglio il codice qui sopra:

  • Per prima cosa, vi agganciate all’azione di attivazione del plugin con la funzione register_activation_hook() e passatevi la funzione di callback. Qui, la funzione di callback è add_plugin_manager_role().
  • Poi definite la funzione di callback e passandole un unico argomento chiamato $network_wide.
  • Il parametro $network_wide è un bool che restituisce true se il plugin è attivato per l’intera rete. Restituisce false se è attivato solo per il sito corrente. Inoltre, è applicabile solo per le installazioni Multisite e il suo valore predefinito è false.
  • La dichiarazione condizionale is_multisite() && $network_wide verifica se il plugin è ‘Attivato sulla Rete’ in un’installazione Multisite. Se è true, esegue il codice allegato alla dichiarazione if. Se è false, viene eseguito il codice nel blocco else.
  • La funzione get_sites(['fields'=>'ids']) restituisce una lista di tutti gli ID dei siti della rete. Utilizzando la funzione PHP foreach(), li attraversa tutti per eseguire il codice su ogni singolo sito della rete.
  • La funzione switch_to_blog( $blog_id ) dirige le successive righe di codice da eseguire per il sottosito con ID $blog_id. Dato che WordPress è nato principalmente come piattaforma di blogging, qui potete sostituire la parola ‘blog’ con ‘site’ per capirne meglio l’utilizzo.
  • Successivamente, utilizzate la funzione add_role() per creare il ruolo utente personalizzato con le sue capacità. Questo segue le stesse convenzioni di codifica come spiegato in precedenza in questo articolo.
  • Prima di terminare il ciclo, definite la funzione restore_current_blog() per assicurarvi di riportare lo stato del sito allo stato originale.
  • Il codice nella dichiarazione else è un fallback che garantisce la compatibilità con le installazioni single-site.

Salvate il file del plugin e andate alla schermata Amministratore del Network > Plugin scegliete ‘Attiva nel Network’ per il vostro plugin personalizzato. Dopo di che, andate alla scheda Utenti in una qualsiasi delle schermate di Modifica Sito del vostro sito per verificare se il nuovo ruolo di Plugin Manager è disponibile.

Cambiare il ruolo degli utenti esistenti del sito con il nuovo ruolo utente
Cambiare il ruolo degli utenti esistenti del sito con il nuovo ruolo utente
Assegnare il ruolo utente personalizzato ai nuovi utenti per un sottosuolo
Assegnare il ruolo utente personalizzato ai nuovi utenti per un sottosuolo

Ho anche avuto conferma che questo nuovo ruolo utente è disponibile su altri siti della rete. Funziona perfettamente.

Assegnare il nuovo ruolo di utente agli utenti esistenti sui sottositi
Assegnazione il nuovo ruolo utente agli utenti esistenti sui sottositi

Potete anche verificare il nuovo ruolo personalizzato e le sue capacità sbirciando nel database del vostro sito. Tuttavia, a differenza di quanto avviene per le installazioni single-site, WordPress Multisite crea una tabella wp_options separata per ogni sotto-sito.

Dove sono memorizzati i ruoli utente in un database WordPress Multisite
Dove sono memorizzati i ruoli utente in un database WordPress Multisite

Potete trovare le tabelle specifiche dei sotto-siti elencati come wp_2_options, wp_3_options e wp_4_options. Allo stesso modo, i ruoli e le capacità sono memorizzati nei rispettivi campi denominati wp_2_user_roles, wp_3_user_roles e wp_4_user_roles.

Avete così stabilito come creare un ruolo utente personalizzato per tutti i siti della vostra rete, ma cosa ne sarà dei siti che verranno creati in futuro? Per essere sicuri di aggiungere questo ruolo utente personalizzato ad ogni nuovo sito creato nella rete, potete aggiungere il seguente codice al vostro plugin:

// run the code once again when a new site is created
function add_custom_user_role_new_site( $blog_id ) { 
    // check whether the plugin is active for the network
    if ( is_plugin_active_for_network( 'add-custom-user-role/add-custom-user-role.php' ) ) {
        switch_to_blog( $blog_id );
        add_role(
             'plugin_manager',
             __('Plugin Manager', 'add-plugin-manager-role'),
             array( 
                  'install_plugins' => true,
                  'activate_plugins' => true,
                  'edit_plugins' => true,
                  'delete_plugins' => true
             )
        );
        restore_current_blog();
    }
}
add_action( 'wpmu_new_blog', 'add_custom_user_role_new_site' );
  • L’azione wpmu_new_blog si attiva ogni volta che qualcuno crea un nuovo sito in una rete Multisite. Potete possibile agganciarvi a questa azione con la funzione di callback per aggiungere il ruolo utente personalizzato.
  • La funzione is_plugin_active_for_network() controlla se il plugin è attivo per l’intero network e restituisce un valore bool. Accetta come argomento il percorso del file del plugin.
  • Il resto del codice segue la stessa logica di prima. Si passa al nuovo sito usando il parametro $blog_id, si crea il proprio ruolo personalizzato usando la funzione add_role(), e poi si ritorna al sito corrente usando la funzione restore_current_blog().

Come Rimuovere i Ruoli Utente da WordPress

Potete rimuovere qualsiasi ruolo utente da WordPress utilizzando la funzione remove_role( ). QUesta accetta un solo argomento, che è il nome del ruolo. Ad esempio, è possibile rimuovere il ruolo di Contributor eseguendo il seguente codice in qualsiasi punto del sito:

remove_role( 'contributor' );

A differenza della funzione add_role(), che continuerà ad aggiornare il database se non viene eseguito all’attivazione di un tema o di plugin, la funzione remove_role() viene eseguita solo se il ruolo esiste. Dato che ogni ruolo passato come argomento viene rimosso la prima volta che viene eseguito, non è necessario preoccuparsi di dove si esegue questa funzione.

Tuttavia, per evitare futuri conflitti, rimuovete il codice dopo che il ruolo è stato rimosso dal database.

Creare Capacità Personalizzate in WordPress

Modificare i ruoli utente esistenti e creare nuovi ruoli personalizzati utilizzando le capacità integrate di WordPress è sufficiente nella maggior parte dei casi, ma è possibile definire nuove capacità per le funzionalità introdotte dal codice personalizzato (utilizzando un plugin o un tema).

È quindi possibile utilizzare queste capacità personalizzate per definire nuovi ruoli o aggiungerli a quelli esistenti.

Ad esempio, WooCommerce aggiunge capacità e ruoli extra con le sue notevoli funzionalità di ecommerce. Alcune delle capacità che aggiunge sono:

  • Permettere la gestione delle impostazioni di WooCommerce
  • Creare e modificare i prodotti
  • Visualizzare i report di WooCommerce

Utilizzando queste capacità, aggiunge due nuovi ruoli utente: Customer e Shop Manager.

WooCommerce aggiunge i propri ruoli utente
WooCommerce aggiunge i propri ruoli utente

Il ruolo di Customer è quasi simile al ruolo di Subscriber, tranne per il fatto che gli utenti con il ruolo di Customer possono modificare le informazioni del loro account e visualizzare gli ordini correnti e precedenti. Il ruolo di Shop Manager include tutte le capacità di un Editor, oltre ad avere tutte le capacità di WooCommerce.

Tra gli altri plugin che introducono capacità e/o ruoli personalizzati ci sono The Events Calendar, Visual Portfolio, WPML e WP ERP.

Se vi immergete nella lettura della documentazione di tutti questi plugin, noterete che essi legano quasi tutte le loro capacità personalizzate ai tipi di post personalizzati da loro definiti. Nel caso di WooCommerce, sono i tipi di post personalizzati di Products e Orders, mentre in altri sono rispettivamente Events, Portfolios, Translations e Customers.

Vediamo come creare capacità personalizzate legate a un tipo di post personalizzato.

Per prima cosa, impostate un plugin e registrate il tipo di post personalizzato che desiderate. Nel mio esempio, sto registrando un nuovo tipo di post personalizzato chiamato Stories.

<?php

/*
Plugin Name:    Custom Post Type and Capabilities
Version:        1.0
Description:    Register a custom post type and define custom capabilities tied into it.
Author:         Salman Ravoof
Author URI:     https://www.salmanravoof.com/
License:        GPLv2 or later
License URI:    https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:    custom-post-type-capabilities
*/

// register a custom post type, in this case it's called "story" //
function cpt_story_init() {
    $labels = array(
        'name'                  => _x( 'Stories', 'custom-post-type-capabilities' ),
        'singular_name'         => _x( 'Story', 'custom-post-type-capabilities' ),
        'menu_name'             => _x( 'Stories', 'Admin Menu text', 'custom-post-type-capabilities' ),
        'name_admin_bar'        => _x( 'Story', 'Add New on Toolbar', 'custom-post-type-capabilities' ),
        'add_new'               => __( 'Add New', 'custom-post-type-capabilities' ),
        'add_new_item'          => __( 'Add New Story', 'custom-post-type-capabilities' ),
        'new_item'              => __( 'New Story', 'custom-post-type-capabilities' ),
        'edit_item'             => __( 'Edit Story', 'custom-post-type-capabilities' ),
        'view_item'             => __( 'View Story', 'custom-post-type-capabilities' ),
        'all_items'             => __( 'All Stories', 'custom-post-type-capabilities' ),
        'search_items'          => __( 'Search Stories', 'custom-post-type-capabilities' ),
        'parent_item_colon'     => __( 'Parent Stories:', 'custom-post-type-capabilities' ),
        'not_found'             => __( 'No stories found.', 'custom-post-type-capabilities' ),
        'not_found_in_trash'    => __( 'No stories found in Trash.', 'custom-post-type-capabilities' ),
        'featured_image'        => _x( 'Story Cover Image', 'custom-post-type-capabilities' ),
        'set_featured_image'    => _x( 'Set cover image', 'custom-post-type-capabilities' ),
        'remove_featured_image' => _x( 'Remove cover image', 'custom-post-type-capabilities' ),
        'use_featured_image'    => _x( 'Use as cover image', 'custom-post-type-capabilities' ),
        'archives'              => _x( 'Story archives', 'custom-post-type-capabilities' ),
        'insert_into_item'      => _x( 'Insert into story', 'custom-post-type-capabilities' ),
        'uploaded_to_this_item' => _x( 'Uploaded to this story', 'custom-post-type-capabilities' ),
        'filter_items_list'     => _x( 'Filter stories list', 'custom-post-type-capabilities' ),
        'items_list_navigation' => _x( 'Stories list navigation', 'custom-post-type-capabilities' ),
        'items_list'            => _x( 'Stories list', 'custom-post-type-capabilities' ),
    );
 
    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'menu_icon'          => 'dashicons-book',   
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'story' ),
        'capability_type'    => array ( 'story', 'stories' ),
        'map_meta_cap'       => true,
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 6,
        'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
        'show_in_rest'       => true,
    );
 
    register_post_type( 'story', $args );
}
 
add_action( 'init', 'cpt_story_init' );

Ecco un’analisi dello script qui sopra:

  • La funzione register_post_type() registra il vostro tipo di post personalizzato. Potete agganciarvi all’azione init per eseguire questa funzione.
  • La funzione register_post_type() accetta due argomenti. Il primo è il nome del tipo di post personalizzato e il secondo è un array contenente tutti gli argomenti per la registrazione del tipo di post.
  • La variabile $args contiene tutti gli argomenti che si passeranno alla funzione register_post_type(). Uno dei suoi argomenti (‘labels’) è esso stesso un array definito separatamente come la variabile $label.
  • Si noti l’argomento 'capability_type' => 'post'. È il tipo di capacità predefintio utilizzato da WordPress per costruire le capacità di lettura, modifica e cancellazione del tipo di post personalizzato.
  • Per creare le vostre capacità personalizzate, dovete sostituire il valore dell’argomento capability_type con il nome preferito delle vostre capacità personalizzate. Questo accetta come argomento una stringa o un array. L’array è utile se il plurale della vostra capacità personalizzata non segue la sintassi standard del suffisso s (ad es. book/books vs story/stories).
  • È inoltre possibile utilizzare l’argomento delle capabilities per denominare le nuove capacità in modo diverso da quanto fa WordPress automaticamente.
  • Dovete mappare le vostre capacità personalizzate sulle capacità primitive di WordPress. Impostate l’argomento map_meta_cap su true in modo che WordPress sappia che deve mappare le capacità personalizzate come suggerito.

Successivamente, dovete aggiungere le capacità personalizzate ai ruoli che desidera abbiano accesso al tipo di post personalizzato Stories. Per questo esempio, concedo la capacità ai ruoli di Administrator e di Editor.

// add the custom capabilities to the desired user roles 
$roles = array( 'editor','administrator' );

foreach( $roles as $the_role ) {      
    
    $role = get_role($the_role);
            
            $role->add_cap( 'read' );
            $role->add_cap( 'read_story');
            $role->add_cap( 'read_private_stories' );
            $role->add_cap( 'edit_story' );
            $role->add_cap( 'edit_stories' );
            $role->add_cap( 'edit_others_stories' );
            $role->add_cap( 'edit_published_stories' );
            $role->add_cap( 'publish_stories' );
            $role->add_cap( 'delete_others_stories' );
            $role->add_cap( 'delete_private_stories' );
            $role->add_cap( 'delete_published_stories' );
}

Salvate il file e poi attivate il plugin. Ora dovreste vedere il link e il pannello Stories nel vostro cruscotto di Administrator o Editor.

Il pannello del tipo di post personalizzato "Storie" nel cruscotto di WordPress
Il pannello del tipo di post personalizzato “Storie” nel cruscotto di WordPress

Se controllate le capacità disponibili nel vostro sito, vedrete anche tutte le capacità relative alle storie che abbiamo aggiunto. Qui utilizzo il plugin View Admin As per verificare le capacità.

È possibile scaricare una versione completa di questo plugin da questo Gist. Il plugin registra un tipo di post personalizzato chiamato Projects con una serie di capacità personalizzate. E poi li assegna a due ruoli personalizzati chiamati Students e Teachers per aiutarvi a costruire un sito web educativo.

C’è un modo per definire capacità personalizzate che consentono agli utenti di accedere alle impostazioni del plugin in base al loro ruolo. Questa analisi va oltre lo scopo di questo articolo, ma, per maggiori informazioni, potete far riferimento a questo thread informativo su StackExchange.

I Migliori Plugin per i Ruoli e le Capacità degli Utenti di WordPress

Saper modificare i ruoli e le capacità degli utenti con il codice è fantastico, ma non è per tutti. Ci sono così tante cose che possono andare storte se non si è sicuri di ciò che si sta facendo. Tuttavia, sapere come funzionano i ruoli e le capacità in WordPress aiuta immensamente anche se si utilizza un plugin.

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

User Role Editor (di Vladimir Garagulia)

Il plugin WordPress "User Role Editor"
Il plugin WordPress “User Role Editor”

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

Dopo l’installazione e l’attivazione del plugin, potete andare su Utenti > User Role Editor nel cruscotto di amministrazione per accedere all’interfaccia principale.

Il cruscotto dell'Editor dei ruoli utente
Il cruscotto dell’Editor dei ruoli utente

Ecco una panoramica dettagliata delle sezioni del cruscotto contrassegnate sopra:

  1. Selezionare il ruolo che si desidera personalizzare dal menu a tendina. Questo elencherà non solo i ruoli predefiniti, ma tutti i ruoli presenti nel vostro database. Potete anche scegliere di mostrare le capacità in forma leggibile piuttosto che le costanti. Un’altra opzione permette di vedere le capacità deprecate che non sono più supportate nell’ultima versione di WordPress.
  2. User Role Editor raggruppa a sinistra tutte le capacità in categorie distinte. La categoria Core include tutte le capacità native. Dato che ho installato WooCommerce su questo sito, è possibile trovare anche le capacità per i tipi di post personalizzati di WooCommerce. Anche il plugin User Role Editor aggiunge il proprio set di capacità personalizzate.
  3. Sulla destra, troverete l’elenco di tutte le capacità. Dato che ho selezionato il gruppo All, posso vedere tutte le capacità. Tuttavia, potete filtrarle cliccando su un gruppo a sinistra. Potete anche spuntare l’opzione Granted Only in alto per nascondere tutte le capacità che non sono utilizzate da nessun ruolo utente.
  4. Da qui è anche possibile Aggiungere un ruolo, Rinominare un ruolo, Aggiungere capacità e Cancellare un ruolo. In fondo, troverete un’opzione aggiuntiva per nascondere la barra di amministrazione per il ruolo utente.
Visualizzazione delle capacità in forma leggibile
Visualizzazione delle capacità in forma leggibile

Per personalizzare qualsiasi ruolo utente, è sufficiente selezionare o deselezionare le capacità desiderate e fare clic sul pulsante Aggiorna per salvare le modifiche. È proprio così facile.

Aggiungere un nuovo ruolo in User Role Editor
Aggiungere un nuovo ruolo in User Role Editor

Fate clic sul pulsante Add Role per creare un nuovo ruolo. È possibile creare un ruolo da zero o duplicare un ruolo esistente utilizzando l’opzione del dropdown Make copy.

Rinominare facilmente il 'Display Role Name'.
Rinominare facilmente il ‘Display Role Name’.

È anche possibile rinominare il Display Role Name facendo clic sul pulsante Rename Role. Tuttavia, non è possibile modificare il Role ID (o Role Name). Una soluzione consiste nel duplicare il ruolo di cui volete cambiare l’ID e poi cancellare il ruolo originale.

Aggiungere una nuova capacità in User Role Editor
Aggiungere una nuova capacità in User Role Editor

Potete aggiungere nuove capacità facendo clic sul pulsante Add Capability (Aggiungi capacità).

Cancellare facilmente i ruoli utente non assegnati
Cancellare facilmente i ruoli utente non assegnati

Facendo clic sul pulsante Delete Roles potete eliminare i ruoli personalizzati che non sono stati assegnati a nessun utente.

Nota: User Role Editor non consente di eliminare i ruoli o le capacità incorporate in WordPress. Non consente nemmeno di eliminare qualsiasi ruolo personalizzato se assegnato a un qualsiasi utente, o qualsiasi capacità personalizzata se assegnata a un qualsiasi ruolo non amministratore.

Il pulsante ‘Delete Capability’ in User Role Editor

Si noti che il pulsante Delete Capability appare solo se una qualsiasi capacità non è assegnata ai non-admin. Altrimenti è nascosto.

È inoltre possibile assegnare più ruoli allo stesso utente o non assegnargli alcun ruolo.

Eliminare qualsiasi ruolo utente in User Role Editor
Eliminare qualsiasi ruolo utente in User Role Editor

Per assegnare a un utente più ruoli, è necessario andare al pannello Utenti nel cruscotto, e poi cliccare sul link Capabilities (Capacità) che vedrete qui sotto dopo aver passato il mouse sul nome utente.

Assegnazione di più ruoli allo stesso utente
Assegnazione di più ruoli allo stesso utente

Se andate in Impostazioni > User Role Editor nella vostra dashboard di amministrazione, troverete anche opzioni aggiuntive.

La scheda delle opzioni "Generale" per User Role Editor
La scheda delle opzioni “Generale” per User Role Editor

Qui è possibile modificare le impostazioni predefinite del plugin, installare moduli aggiuntivi, modificare il ruolo predefinito assegnato ai nuovi utenti e persino ripristinare i ruoli e le capacità degli utenti al loro stato predefinito.

I moduli aggiuntivi aiutano ad estendere le funzionalità di User Role Editor
I moduli aggiuntivi aiutano ad estendere le funzionalità di User Role Editor
Impostare il ruolo predefinito per i nuovi utenti
Impostare il ruolo predefinito per i nuovi utenti
Ripristinare tutti i ruoli e le capacità dell'utente al loro stato di default
Ripristinare tutti i ruoli e le capacità dell’utente al loro stato di default

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

Members by MemberPress

Il plugin "Members" di WordPress
Il plugin “Members” di WordPress

Members è un plugin WordPress focalizzato sulle iscrizioni per il controllo dei ruoli e delle capacità degli utenti. Lanciato originariamente come semplice plugin per la gestione dei ruoli utente e delle capacità, da allora si è orientato verso le funzionalità delle iscrizioni.

Il pannello "Ruoli" in Members
Il pannello “Ruoli” in Members

Dopo aver installato e attivato il plugin, potete visualizzare tutti i ruoli disponibili sul vostro sito andando su Members > Roles nella vostra dashboard.

Members consente di eliminare tutti i ruoli, compresi i ruoli nativi di WordPress, ad eccezione dell’Amministratore e del Ruolo predefinito. È anche possibile modificare e clonare i ruoli, oltre ad elencare tutti gli utenti assegnati ad un ruolo specifico.

Il pannello 'Edit Role' in Members
Il pannello ‘Edit Role’ in Members

All’interno del pannello Edit Role, è possibile concedere o negare esplicitamente le capacità ad un particolare ruolo spuntando e sbloccando le relative caselle di controllo. Da qui è anche possibile aggiungere al ruolo una capacità personalizzata.

Il pannello 'Add New Role' in Members
Il pannello ‘Add New Role’ in Members

Facendo clic sul link Add New Role (Aggiungi nuovo ruolo) si accede ad una schermata simile dove è possibile creare un nuovo ruolo dandogli un nome da visualizzare, un id e il suo insieme di capacità.

Il pannello "General Settings" in Members
Il pannello “General Settings” in Members

Proprio come User Role Editor, è possibile utilizzare i Members per assegnare agli utenti ruoli multipli. È anche possibile impostare i permessi sui contenuti per limitarli solo agli utenti con un certo ruolo.

È anche possibile attivare la modalità 'Private Site' in Members
È anche possibile attivare la modalità ‘Private Site’ in Members

Potete impostare il vostro sito e il suo feed in modo che sia privato. Inoltre, è possibile limitare l’accesso all’API REST di WordPress agli estranei rafforzando l’autenticazione.

Vari componenti aggiuntivi per il plugin Members
Vari componenti aggiuntivi per il plugin Members

Members si distingue dagli altri plugin di ruoli e capacità per i suoi straordinari componenti aggiuntivi. Questi vi aiutano ad aggiungere una quantità di funzionalità al vostro sito, come la privacy degli utenti e la gestione dei dati personali (GDPR), aggiungere funzionalità relative ai tag e alle categorie, stabilire la gerarchia dei ruoli e altro ancora.

Members si integra con i popolari plugin WordPress
Members si integra con i popolari plugin di WordPress

È possibile integrare senza problemi Members con molti plugin WordPress popolari. Ad esempio, potete utilizzarlo 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, Meta Box e WooCommerce.

I componenti aggiuntivi di Members incentrati sulle iscrizioni (Payments, Subscriptions, Email Marketing e Advanced Content Protection) sono disponibili solo nella versione premium.

WPFront User Role Editor

Il plugin 'WPFront User Role Editor'
Il plugin ‘WPFront User Role Editor’

WPFront User Role Editor vi aiuta a creare, modificare o eliminare i ruoli e le capacità degli utenti nel vostro sito WordPress. Il suo set di funzionalità è simile ai plugin discussi in precedenza, ma ha due caratteristiche distintive.

Migrare tutti gli utenti da un ruolo ad un altro
Migrare tutti gli utenti da un ruolo ad un altro

Dopo aver installato e attivato WPFront User Role Editor, potete andare alla schermata Utenti > Assign / Migrate nella vostra dashboard di amministrazione e migrare tutti gli utenti appartenenti ad un particolare ruolo utente ad un altro. Potete anche assegnare ai vostri utenti ruoli secondari.

Se sul vostro sito dovete migrare molti utenti da un ruolo all’altro, questa funzione vi sarà molto utile.

La schermata delle impostazioni 'Login Redirect' in WPFront User Role Editor
La schermata delle impostazioni ‘Login Redirect’ in WPFront User Role Editor

Un’altra funzionalità molto utile di WPFront User Role Editor è il Login Redirect basato sui ruoli. Ad esempio, dopo il login, potete reindirizzare gli utenti con il ruolo di Editor alla pagina dei post. Avete anche la possibilità di bloccare l’accesso alla pagina /wp-admin e la visualizzazione della barra degli strumenti sul frontend.

Advanced Access Manager

Il plugin "Advanced Access Manager"
Il plugin “Advanced Access Manager”

Advanced Access Manager (AAM) è un potente plugin per WordPress che permette di controllare quasi ogni aspetto del vostro sito web. Include oltre 200 diverse funzionalità ed è progettato per gli utenti avanzati di WordPress che sanno come funzionano i ruoli e le capacità.

Rispetto ai plugin sopra elencati, AAM ha molte più funzionalità. Ma poiché si tratta di un plugin focalizzato sugli sviluppatori, non è così facile da usare per i principianti o per gli utenti intermedi.

Il cruscotto principale in Advanced Access Manager
Il cruscotto principale in Advanced Access Manager

È possibile dividere il cruscotto principale di AAM in quattro regioni distinte. Le ho numerate nell’immagine qui sopra con una panoramica qui sotto.

  1. L’area più in alto menziona l’attuale “soggetto” in esame. Qui, c’è il Ruolo: Amministratore, ma può essere un utente specifico, un visitatore anonimo o un’impostazione predefinita per tutti.
  2. L’area sotto il soggetto è il pannello principale dove ci sono tutte le impostazioni per gestire l’accesso alle varie cose del vostro sito che riguardano il soggetto.
  3. La terza area è il Gestore degli Utenti/Ruoli. Utilizzando le icone delle schede, potete selezionare ciò che volete gestire. Si tratta di un ruolo utente, di un utente specifico, di un visitatore anonimo o di un comportamento di accesso predefinito per tutti?
  4. La quarta area consente di gestire le impostazioni di AAM, installare i suoi componenti aggiuntivi premium e contattare il supporto.
Il pannello "Impostazioni" in Advanced Access Manager
Il pannello “Impostazioni” in Advanced Access Manager

AAM organizza le sue impostazioni in 5 gruppi in base al comportamento e all’utilizzo.

  • Nelle impostazioni dei Services sono elencati tutti i moduli di AAM che è possibile attivare o disattivare. Caricando i moduli in modo selettivo, è possibile mantenere il sito ottimizzato.
  • L’area Core Settings consente di abilitare o disabilitare alcune delle funzionalità principali di AAM e WordPress.
  • Content Settings si riferisce ai contenuti del sito (ad es. post, pagine, tipi di post personalizzati).
  • La sezione Security Settings contiene le impostazioni per la funzionalità di accesso sicuro di AAM. Al momento sono disponibili solo due impostazioni: Brute Force Lockout e One Session Per User.
  • ConfigPress è una funzionalità interessante che permette di modificare la configurazione del plugin AAM con codice basato su INI.
Il pannello 'Add-ons' in Advanced Access Manager
Il pannello ‘Add-ons’ in Advanced Access Manager

AAM è un plugin orientato agli sviluppatori che va oltre i soli ruoli e le capacità degli utenti. Vi dà un controllo granulare su ciò che ogni ruolo può e non può fare sul vostro sito web.

Installare una 'Policy degli Accessi' per tenere al sicuro il vostro sito
Installare una ‘Policy degli Accessi’ per tenere al sicuro il vostro sito

Potete utilizzare AAM per impostare una politica di accesso e sicurezza per il vostro sito web. Questa definisce quale ruolo, e a quali condizioni, può accedere alle varie risorse del vostro sito web. Se desiderate iniziare subito, potete installare una politica di accesso già pronta da AAM Access Policy Hub.

Widget 'AAM Secure Login' per aggiungere un modulo di accesso frontend
Widget ‘AAM Secure Login’ per aggiungere un modulo di accesso frontend

AAM consente di creare account utente e ruoli temporanei. Questo è un modo sicuro di condividere un account con risorse esterne. Gli account utente temporanei scadranno dopo la data e l’ora che avete impostato. Con i ruoli temporanei, l’utente sarà privato di quel ruolo allo scadere del periodo specificato.

Descrivere tutte le funzionalità di AAM è fuori dalla portata di questo articolo. È possibile fare riferimento alla documentazione di Advanced Access Manager per saperne di più su tutte le sue ampie caratteristiche.

Suggerimento: User Access Manager è una discreta alternativa ad Advanced Access Manager, anche se ha meno funzionalità e non viene aggiornato frequentemente.

User Switching

Il plugin WordPress "User Switching"
Il plugin WordPress “User Switching”

User Switching consente di passare da un account utente WordPress all’altro con un solo clic. Se si stanno testando molti ruoli e capacità utente, l’utilizzo di questo plugin vi aiuterà a risparmiare molto tempo. User Switching utilizza il sistema di autenticazione dei cookie integrato in WordPress per ricordare l’account o gli account da cui si è passati, in modo da potervi tornare immediatamente.

Dopo aver installato e attivato il plugin, aprite il menu Utenti nel cruscotto. Vedrete un link Switch To per ogni utente. Facendo clic su questo link si passa all’utente desiderato.

Cliccare sul link
Cliccare il link “Switch to” per passare all’utente desiderato

Potete tornare al vostro account originale cliccando sul link Switch back nel cruscotto o nella schermata del vostro profilo utente.

Tornare al proprio account di origine
Si può tornare facilmente al proprio account di origine

Potete anche disattivare (Switch Off) temporaneamente il vostro account di amministratore per vedere come il vostro frontend appare ai visitatori.

Attivare e disattivare l'account con un solo clic
Attivare e disattivare l’account con un solo clic

Come misura di sicurezza, solo gli utenti con la possibilità di modificare gli utenti possono cambiare account utente. Di default, solo gli amministratori hanno questa capacità in un’installazione di WordPress single-site, mentre su un network multisite solo i Super Admin hanno questa capacità.

Per semplificare ulteriormente il passaggio da un utente all’altro, è possibile installare l’estensione Admin Bar User Switching che fa apparire il link Switch to user nella barra di amministrazione.

Aggiungere il link "Switch to user" alla barra di amministrazione
Aggiungere il link “Switch to user” alla barra di amministrazione

View Admin As

Il plugin WordPress 'View Admin As'
Il plugin WordPress ‘View Admin As’

View Admin As è un plugin avanzato per passare da un utente all’altro che include anche un gestore di ruoli e capacità. A differenza del plugin User Switching, non è necessario installare un’estensione per aggiungere il menu di cambio utente alla barra di amministrazione. View Admin As aggiunge di default tutte le sue voci di menu principali alla barra di amministrazione.

Il menu 'View As' nella barra di amministrazione
Il menu ‘View As’ nella barra di amministrazione

È possibile passare da un utente o ruolo esistente all’altro (assumendone le capacità), anche se non esiste un utente con questi ruoli. Facendo clic sul link Site visitor, si accede al frontend del sito dove è possibile testare le funzionalità del sito come utente normale senza lasciare la scheda del browser.

View Admin As consente di modificare temporaneamente le proprie capacità. Poiché è fatto in modo non distruttivo, non si perde l’accesso alle proprie capacità principali.

Personalizzare temporaneamente le capacità per l'utente corrente
Personalizzare temporaneamente le capacità per l’utente corrente

Dopo essere passati ad un account utente, è possibile modificare le loro preferenze e le impostazioni dello schermo direttamente dal menu. Potete anche cambiare lingua/locale sul frontend e sul backend separatamente.

Non siete limitati a un solo tipo di vista, dato che potete combinare le varie opzioni e applicarle tutte contemporaneamente.

View Admin As viene fornito con due moduli opzionali che è possibile abilitare se necessario.

Impostazioni e moduli opzionali di View Admin As
Impostazioni e moduli opzionali di View Admin As

Il primo modulo aggiunge la funzione Role Defaults che consente di definire le impostazioni predefinite dello schermo per tutti i ruoli. È possibile applicare queste impostazioni predefinite a un ruolo, a un singolo utente o a futuri nuovi utenti.

Il secondo modulo abilita la funzionalità Role Manager. Qualsiasi modifica apportata con questo modulo ai ruoli e alle capacità è permanente. A differenza di altri plugin per l’editing dei ruoli, questo modulo consente di eliminare il ruolo assegnato ad un utente migrandolo automaticamente ad un altro ruolo.

Per saperne di più sulle sue ampie funzionalità, potete consultare la documentazione di View Admin As.

Ruoli Utente in MyKinsta

La funzionalità multi-utente di MyKinsta consente di creare e gestire più utenti sotto lo stesso account dando loro accesso ad aspetti unici del vostro account Kinsta o a siti web specifici ospitati su Kinsta.

Ci sono vari ruoli tra cui potete scegliere per personalizzare l’accesso degli utenti in base alle vostre esigenze.

La schermata 'Gestione utenti' nel cruscotto di MyKinsta
La schermata ‘Gestione utenti’ nel cruscotto di MyKinsta

Il primo utente ottiene di default il ruolo di Proprietario di Azienda. È il ruolo più potente e include anche tutte le capacità di un Amministratore di Azienda.

Ci può essere un solo Proprietario di Azienda alla volta, ma è possibile trasferire il ruolo, se necessario, ad un altro Amministratore di Azienda. In questo modo, trasferirete anche la proprietà del vostro account Kinsta al nuovo Proprietario di Azienda.

Solo il Proprietario di Azienda può richiedere a Kinsta di cancellare l’account.

È possibile dividere gli altri ruoli utente in 2 categorie di ruoli principali:

  • Livello di azienda
  • Livello del sito

I ruoli a livello di azienda consentono agli utenti di accedere ai dati a livello aziendale dell’account di Kinsta, mentre i ruoli a livello di sito consentono agli utenti di accedere solo ai siti specifici loro assegnati. Quando si invita un nuovo utente o si modifica un utente esistente, la prima scelta da fare è quella di dare loro accesso a livello di azienda o di sito.

Scegliere il tipo di ruolo quando si invita un utente a MyKinsta
Scegliere il tipo di ruolo quando si invita un utente a MyKinsta

Ruoli a Livello di Azienda

Amministratore di Azienda

Il cruscotto "Amministratore di Azienda" in MyKinsta
Il cruscotto di “Amministratore di Azienda” in MyKinsta

Il ruolo di Amministratore di Azienda garantisce il massimo livello di accesso a MyKinsta. Dà all’utente il controllo completo sull’account Kinsta e su tutti i suoi siti. Si dovrebbe dare questo ruolo solo agli utenti di cui ci si fida.

Sviluppatore di Azienda

Il cruscotto "Sviluppatore di azienda" in MyKinsta
Il cruscotto “Sviluppatore di Azienda” in MyKinsta

Il ruolo di sviluppatore d’azienda garantisce l’accesso alla gestione di tutti i siti, compresa la loro cancellazione. Dato che i ruoli utente di MyKinsta sono basati sulla gerarchia, uno sviluppatore d’azienda può anche gestire gli utenti a livello di sito. Tuttavia, uno sviluppatore d’azienda non può accedere alle impostazioni dell’azienda o ai dati di fatturazione.

Fatturazione di Azienda

Il cruscotto "Fatturazione Azienda" in MyKinsta
Il cruscotto “Fatturazione Azienda” in MyKinsta

Il ruolo di Fatturazione di Azienda consente l’accesso solo per visualizzare i dati di fatturazione e le impostazioni aziendali. Questi utenti non hanno accesso ad alcun sito. Gli utenti con il ruolo di fatturazione d’azienda possono controllare le fatture, abilitare l’invio automatico di email di fatturazione e modificare i dati dell’azienda, come l’indirizzo e le informazioni di contatto.

Ruoli a Livello di Sito

Amministratore del Sito

Il cruscotto "Amministratore del Sito" in MyKinsta
Il cruscotto “Amministratore del Sito” in MyKinsta

Il ruolo di Amministratore del Sito ha accesso completo a un sito specifico, compreso il controllo di tutti gli ambienti collegati a quel sito. Tuttavia, non può rimuovere un sito dall’account aziendale. È possibile assegnare lo stesso utente come Amministratore del sito a più siti.

Sviluppatore del Sito

Il cruscotto "Sviluppatore del sito" in MyKinsta
Il cruscotto “Sviluppatore del sito” in MyKinsta

Il ruolo di Sviluppatore del Sito ha accesso solo all’ambiente di staging del sito assegnato. Questi utenti possono fare qualsiasi cosa nell’ambiente di staging, ma non possono rimuovere l’ambiente di staging o spingere le modifiche in produzione. Come avviene per gli amministratori dei siti, è possibile assegnare lo stesso utente come sviluppatore del sito a più siti.

Gli sviluppatori del sito possono accedere all'ambiente di staging per il sito assegnato
Gli sviluppatori del sito possono accedere all’ambiente di staging per il sito assegnato

Gli sviluppatori del sito non hanno accesso alle funzioni di analisi, gestione degli utenti e registro delle attività nel cruscotto di MyKinsta.

Ruoli Utente di MyKinsta e Ruoli Utente di WordPress

Non ci sono sovrapposizioni tra i ruoli utente di MyKinsta e WordPress. Potete utilizzarli entrambi indipendentemente l’uno dall’altro.

In qualità di proprietari di un account Kinsta, la funzionalità dei ruoli multiutente di MyKinsta vi aiuta a gestire un team di manager, sviluppatori e contabili con facilità. Semplifica moltissimo il lavoro delle agenzie di sviluppo web nella gestione di tutti i siti dei loro clienti da un unico, potente cruscotto.

Riepilogo

I ruoli e le capacità di WordPress sono i concetti fondamentali della gestione degli accessi degli utenti. Vi permettono di controllare le azioni che tutti gli utenti del vostro sito possono eseguire. Sono anche utilizzati da molti temi e plugin per aggiungere capacità molto utili al core di WordPress.

WordPress è dotato di un proprio set di ruoli e capacità, ma se avete bisogno di maggiore flessibilità, potete personalizzarli o creare i vostri ruoli e le vostre capacità. È possibile farlo con il proprio codice o utilizzando un plugin di terze parti.

Capire quali sono i ruoli e le capacità, e imparare a gestirli, è fondamentale per padroneggiare WordPress. Cominciate subito!

Carlo Daniele Kinsta

Carlo è cultore appassionato di webdesign e front-end development. Gioca con WordPress da oltre 20 anni, anche in collaborazione con università ed enti educativi italiani ed europei. Su WordPress ha scritto centinaia di articoli e guide, pubblicati sia in siti web italiani e internazionali, che su riviste a stampa. Lo trovate su LinkedIn.