Roles e capabilities sono due aspetti importanti di WordPress che permettono di controllare i privilegi degli utenti.
WordPress memorizza i Ruoli e le loro Capacità nella tabella options
sotto la chiave user_roles
.
Ruoli #Roles
Un ruolo definisce un insieme di capacità per un utente. Per esempio, ciò che l’utente può vedere e fare nella sua dashboard.
Di default, WordPress ha sei ruoli:
- Super Admin
- Administrator
- Editor
- Author
- Contributor
- Subscriber
Altri ruoli possono essere aggiunti e quelli di default possono essere rimossi.
Aggiungimento di ruoli #Adding Roles
Aggiungi nuovi ruoli e assegna loro capacità con add_role().
function wporg_simple_role() {add_role('simple_role','Simple Role',array('read' => true,'edit_posts' => true,'upload_files' => true,),);}// Add the simple_role.add_action( 'init', 'wporg_simple_role' );
Expand full source codeCollapse full source code
Dopo la prima chiamata ad add_role(), il ruolo e le sue capacità saranno memorizzati nel database!
Le chiamate sequenziali non faranno nulla: compresa l’alterazione della lista delle capacità, che potrebbe non essere il comportamento che ci si aspetta.
Nota:
Per modificare la lista delle capacità in blocco: rimuovi il ruolo usando remove_role() e aggiungilo nuovamente usando add_role() con le nuove capacità.
Assicurarsi di farlo solo se le capacità differiscono da quelle che ci si aspetta (cioè condizionano questo) o si degradano notevolmente le prestazioni!
Top
Rimozione dei ruoli #Removing Roles
Rimuovere i ruoli con remove_role().
function wporg_simple_role_remove() {remove_role( 'simple_role' );}// Remove the simple_role.add_action( 'init', 'wporg_simple_role_remove' );
Attenzione:
Dopo la prima chiamata a remove_role(), il ruolo e le sue capacità saranno rimossi dal database!
Chiamate successive non faranno nulla.
Nota:
Se stai rimuovendo i ruoli predefiniti:
- Sconsigliamo di non rimuovere i ruoli Administrator e Super Admin!
- Assicurati di mantenere il codice nel tuo plugin/tema, poiché i futuri aggiornamenti di WordPress potrebbero aggiungere nuovamente questi ruoli.
- Esegui
update_option('default_role', YOUR_NEW_DEFAULT_ROLE)
perché cancelleraisubscriber
che è il ruolo predefinito di WP.
Top
Capacità #Capabilities
Le capacità definiscono ciò che un ruolo può e non può fare: modificare post, pubblicare post, ecc.
Nota:
I tipi di post personalizzati possono richiedere un certo insieme di capacità.
Top
Aggiungi capacità #Adding Capabilities
Puoi definire nuove capacità per un ruolo.
Utilizza get_role() per ottenere l’oggetto role, poi usa il metodo add_cap()
di tale oggetto per aggiungere una nuova capacità.
function wporg_simple_role_caps() {// Gets the simple_role role object.$role = get_role( 'simple_role' );// Add a new capability.$role->add_cap( 'edit_others_posts', true );}// Add simple_role capabilities, priority must be after the initial role definition.add_action( 'init', 'wporg_simple_role_caps', 11 );
Nota:
È possibile aggiungere capacità personalizzate a qualsiasi ruolo.
Nell’amministrazione predefinita di WordPress, non avrebbero alcun effetto, ma possono essere utilizzate per schermate di amministrazione personalizzate e aree front-end.
Top
Rimozione delle capacità #Removing Capabilities
Puoi rimuovere le capacità da un ruolo.
L’implementazione è simile all’aggiunta di capacità con la differenza che si usa il metodo remove_cap()
per l’oggetto ruolo.
Top
Usare i ruoli e le capacità #Usare i ruoli e le capacità
Top
Get Role #Get Role
Ottieni l’oggetto role, comprese tutte le sue capacità, con get_role().
get_role( $role );
Top
User Can #User Can
Controlla se un utente ha un ruolo o una capacità specifica con user_can().
user_can( $user, $capability );
Avviso:
C’è un terzo argomento non documentato, $args, che può includere l’oggetto rispetto al quale il test dovrebbe essere eseguito.
Per esempio, passare un ID del post per testare la capacità di quello specifico post.
Top
Current User Can #Current User Can
current_user_can() è una funzione wrapper per user_can() che usa l’oggetto current user come parametro $user
.
current_user_can( $capability );
Top
Esempio #Esempio
Ecco un esempio pratico di aggiunta di un link di modifica in un file template se l’utente ha le capacità adeguate:
if ( current_user_can( 'edit_posts' ) ) {edit_post_link( esc_html__( 'Edit', 'wporg' ), '<p>', '</p>' );}
Top
Multisite #Multisite
La funzione current_user_can_for_blog() è usata per testare se l’utente corrente ha un certo ruolo o capacità su un blog specifico.
current_user_can_for_blog( $blog_id, $capability );
Top