WordPress.org

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

Alert:
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é cancellerai subscriber 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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *