Come modificare i roles di WordPress e lavorarci

Come modificare i roles di WordPress e lavorarci

In precedenza avevo evidenziato, peraltro un po’ a malincuore, come la gestione dei ruoli in WP sia piuttosto carente e come sia opportuno non metterci mano: vorrei quindi dedicare un intero articolo all’argomento, cercando di capirci qualcosa in più anche in base all’esperienza che ho fatto negli ultimi tempi.

Cosa sono i ruoli (roles) di wordpress?

I ruoli servono a stabilire, semplificando, “chi possa fare cosa” – in generale in un sistema informatico qualsiasi (e nello specifico in un sito multi-utente): ad esempio un amministratore può cambiare theme, modificare il core, abilitare plugin e creare un utenti, così come un utente ospite può soltanto creare post che verranno pubblicati dopo l’approvazione. I ruoli sono per questo motivo delicatissimi ed assegnarli male può comportare la compromissione dell’intero sito e l’eventuale perdita dei dati. Ho scritto a più riprese che wordpress è molto soggetto ad attacchi informatici, e questo per due ragioni apparenti fondamentali: la prima è il sistema di login (le password scelte sono davvero troppo facili da indovinare, in certi casi), il secondo sono i plugin fallati che vengono installati nonostante tutto. Molti webmaster sono convintissimi che sia un problema da relegare ai provider di hosting, ma non è così, quantomeno se curate voi stessi la messa a punto del sito da webmaster e se state utilizzando hosting condivisi, dedicati unmanaged e così via. Nel frattempo siamo arrivati ad una nuova gestione dei permessi utenti semplice ed intuitiva mediante Joomla!, ed in questo il CMS (che personalmente non amo) sembra obiettivamente mettere la freccia per sorpassare.

Come sono gestiti i ruoli in WP

Dalle mie ricerche emerge come la maggioranza dei migliori plugin per modificare i ruoli sia a pagamento: una testimonianza del fatto che questa feature non sia affatto supportata nè sostenuta dalla comunità, e che farne uso sia difficile quanto, in certa misura, sconsigliabile. In wordpress, stando alla documentazione del codex, i ruoli predefiniti sono sei: Super Admin (che può fare tutto), Administrator, Editor, Author, Contributor e Subscriber (il più “vincolato” della catena). Ognuno di essi potrà eseguire un insieme predefinito di azioni (capabilities), ad esempio:

  • Super Admin – può accedere ad un network di siti in WordPress (multi-site);
  • Administrator – può accedere ad un singolo sito in WordPress (single-site);
  • Editor – può editare e pubblicare post altrui (approvarli);
  • Author – può editare e pubblicare post propri (auto-pubblicarli);
  • Contributor – può editare post propri (senza auto-pubblicarli), previa approvazione di un Editor;
  • Subscriber – può semplicemente manipolare il proprio profilo.

Come modificare i ruoli

Prima di rispondere al come, chiediamoci perchè vogliamo farlo: i ruoli predefiniti sono lì apposta, e se un utente deve avere maggiori (o minori) privilegi basta scalarli uno per volta da “Utenti->Tutti gli utenti“. una circostanza molto comune, del resto, è che degli utenti contributor abbiano l’opportunità discrivere articoli corredati di immagini. In questa immagine viene mostrato infatti che tale categoria di utenti del sito WordPress non possono effettuare l’upload, e questo effettivamente diventa problematico.

Schermata 2013-11-20 alle 16.37.26

Del resto un author può scrivere articoli con immagini, ma senza necessità di approvazione: se cerchiamo una via di mezzo, di fatto, è necessario per forza di cose intervenire sui ruoli.

 

Plugin di WordPress per modificare i ruoli

Il plugin per WordPress che dovrebbe fare al caso vostro, almeno al momento attuale, è User Role Editor, che è sostanzialmente un editor di capabilities attivabile lato amministratore.

screenshot-1Si tratta del più pratico che ho trovato in giro, tra i prodotti gratuiti: mi pare anche che abbia un’interfaccia piuttosto immediata, per cui suggerirei di usare questo fermo restando che non è l’unica soluzione possibile (esempio: potremmo creare un ruolo intermedio tra autore e contributore ex novo e dargli tutti i privilegi che vogliamo). Ricordiamoci comunque che effettuare questo genere di modifiche, in linea di principio, crea potenzialmente delle falle di sicurezza. Per la stessa ragione suggerisco di non usare Role Scoper (un po’ troppo complicato, secondo me), Capability Manager (obsoleto), User assign categories (obsoleto), e di preferirvi quello che ho segnalato. Assolutamente sconsigliato di adottare i vari plugin per modificare i role che non siano hostati sul sito ufficiale di WordPress, in quanto possono seriamente mettere a repentaglio la stabilità e sicurezza del vostro blog. Di recente ho infinte scovato Press Permite Core ma non ho avuto mai modo di usarlo, finora, così come WordPress Role Manager (che è su SourceForge ma non so come sia).

Un’ulteriore soluzione per modificare i ruoli consiste nell’agire direttamente sul theme, in particolare agendo sul file functions.php: l’esempio viene riportato dal blog SoulSizzle e lo ricopio qui per comodità (è anche piuttosto auto-esplicativo, se avete un minimo di conoscenze di PHP, in caso chiedete pure nei commenti).

if ( current_user_can('contributor') && !current_user_can('upload_files') )
	add_action('admin_init', 'allow_contributor_uploads');

function allow_contributor_uploads() {
	$contributor = get_role('contributor');
	$contributor->add_cap('upload_files');
}

Photo by JefferyTurner

Ti piace questo articolo?

0 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.

Ti potrebbero interessare (Guide WordPress):

Cerca altro nel sito

Clicca sul box, e scegli la sezione per vederne i contenuti.