Il backend di WordPress è un’ambiente articolato nel quale, però, è facile trovare e modificare le opzioni che ci permettono di personalizzare il front-end.
Dalla versione 3.0, sono emerse ulteriori funzionalità che rendono possibile la personalizzazione dei menù e della grafica.

Talvolta però, la struttura grafica e le funzionalità vengono preventivamente create ad hoc e impostate rigidamente. Si pensi al caso dell’utente inesperto che si rivolge ad una azienda o società, che si occupa di sviluppo per il web, per la creazione di un sito che si allontana per dalla logica del blog e che per questo deve avere una sua struttura personalizzata in grado di svolgere operazioni non consuete.

In questi casi, il back-end del sito rischia di diventare un sistema molto più complesso e articolato del solito. Nel momento in cui il cliente entra in possesso del sito e deve inserirvi contenuti o modificarli, si ritrova all’interno di un sistema che potrebbe mandarlo in confusione. Molti si informano del perchè vi siano determinate funzionalità e come operino, pur non essendo strettamente necessarie all’aggiornamento del sito, altri, considerandole importanti per la loro attività, le manipolano provocando danni al front-end, altri ancora, lamentando la poca chiarezza, esprimono il proprio disappunto con frasi come: “non funziona” o “faccio le modifiche ma non vedo cambiamenti”.

In tutti i casi è preferibile fare in modo che l’utenza finale abbia a disposizione solo le funzionalità strettamente necessarie. Per fare ciò, WordPress mette a disposizione dell’amministratore del sito l’opportunità di assegnare ad ogni utente un ruolo tra quelli prestabiliti limitandone così il raggio d’azione.

Sicuramente una funzione molto utile! Non dimentichiamo, però, che il nostro CMS nasce principalmente come strumento per fare blog e i ruoli previsti sono quelli che generalmente potremmo trovare nella redazione di una piccola testata giornalistica: editore, autore, collaboratore…

Nel nostro caso può non andare bene nessuna delle figure esistenti. Per ovviare al problema, si può creare un ruolo ad hoc che abbia solo le facoltà di nostro interesse.

Facendo riferimento a questa tabella ufficiale ricaviamo le capabilities che ci interessano.

Apriamo il file function.php del template in uso e aggiungiamo una nuova funzione:

function nuovo_ruolo(){
   $capabilities = array('read' => true, 'edit_posts' => true, 'delete_posts' => true, 'editMyPlugin' => true);
   add_role('cliente', 'Cliente', $capabilities);
}
add_action('init', 'nuovo_ruolo');

La prima operazione che la funzione svolge è la creazione di un array di capabilities, solo quelle strettamente necessarie. Poi viene richiamata la funzione di WordPress add_role() che accetta 3 parametri: il nome del ruolo, l’etichetta che verrà visualizzata e l’array delle capabilities precedentemente creato. Aggiungiamo infine l’azione che caricherà la nostra funzione all’avvio di WordPress (add_action()).

Attenzione!!! Una volta eseguita questa funzione verrà registrato sul database il nuovo ruolo e le relative abilità. Aggiungere, successivamente, nuove capabilities potrebbe non avere alcun effetto. Per ovviare, basterà eliminare il ruolo, in modo momentaneo,

remove_role('cliente');

e ripristinare, in un secondo tempo la funzione add_role().

Come potete vedere, una delle capabilities dell’array non appartiene alle capabilities standard elencate nella tabella ufficiale. Creare abilità personalizzate può risultare utile al fine di accomunare ruoli diversi nella gestione di plugin.

Alcuni plugin hanno un pannello di amministrazione che deve poter essere manipolato sia dall’amministratore che da altri ruoli. Per fare ciò basta apportare una modifica al plugin, precisamente alla funzione che determina la creazione del menù nel back-end.

add_menu_page( 'titolo_della_pagina', 'titolo_del_menù', 'abilità_richieste', ... );

Come potete notare il terzo parametro riguarda proprio le abilità richieste. Li potremo, quindi, impostare l’abilità personalizzata e condivisa dai vari ruoli.