Uno dei limiti di WordPress sta nella gestione dei ruoli da assegnare agli utenti. Ne presenta 5 di predefiniti e a volte questi non bastano:
- Subscriber
- Contributor
- Author
- Editor
- Administrator
Esistono diversi plugin che permettono di aggiungere queste funzionalità, ma spesso la via migliore è intervenire direttamente e in maniera mirata senza complicarsi la vita, con nuovo codice, nuovi plugin da aggiornare e problemini vari di compatibilità.
Su tutti mi è capitato il caso in cui volevo dare ad un utente il ruolo di CONTRIBUTOR, cioè dargli la possibilità di scrivere articoli, e di inviarli per revisione invece di pubblicarli direttamente. Ma a quel livello l’utente non può caricare files, quindi non poteva aggiungere immagini al testo. Dovevo intervenire manualmente caricando il file al suo posto. Bisognava abilitare anche gli utenti contributor a caricare files.
Ecco la soluzione. Possiamo intervenire direttamente nel codice per modificare i ruoli esistenti o crearne di nuovi. Per oggi vediamo la modifica. Si interviene sempre nel file functions.php presente nella cartella del template che utilizziamo, in modo tale da non toccare il core e all’aggiornamento del CMS le modifiche verranno mantenute.
Aprire il file functions.php del template in uso e aggiungere le righe seguenti:
<?php
function add_role_caps() {
global $wp_roles;
$role = get_role(‘contributor’);
$role->add_cap(‘upload_files’);
};
add_action (‘admin_head’,'add_role_caps’);
?>
Allo stesso modo possiamo intervenire per aggiungere altri permessi, anche ad altri ruoli, scegliendo fra le capabilities di WordPress.







March 27th, 2010 at 00:45
[...] dei limiti di WordPress sta nella gestione dei ruoli da assegnare agli utenti. blog: WebEpoque | leggi l'articolo Per help e visualizzare le immagini abilitare javascript. Scrivi un commento [...]
July 13th, 2010 at 18:58
ma non bastava usare l’author?
September 26th, 2010 at 16:30
Buon giorno
ho questo problema.
vorrei costruire un blog con queste regole mi puoi aiutare?
Il mio blog è composto da “stanze tematiche” amministrate da un autore dove scrivono diversi collaboratori.
il tutto è amministrato da un editore.
Il mio obiettivo è quello di permettere all’autore della stanza e ai suoi collaboratori di vedere solo il loro materiale fino alla pubblicazione. Dopo di che il post deve essere pubblico.
September 27th, 2010 at 09:06
Ciao Massimo, la questione qui si complica un po’..
In pratica vorresti ricreare un sistema collaborativo per la creazione dei post con diversi gruppi.
WordPress così com’è non permette questo tipo di gestione avanzata di ruoli o permessi, ma esistono dei plugin che potrebbero aiutarti:
User access manager: http://wordpress.org/extend/plugins/user-access-manager/
Capability Manager: http://wordpress.org/extend/plugins/capsman/
Facci sapere come va con i plugin. Se invece la cosa si rivela più complessa e vuoi aiuto contattaci..
September 27th, 2010 at 09:18
A proposito, non ci hai detto qual’è il blog!
September 27th, 2010 at 12:19
wordpress
scusate
September 27th, 2010 at 12:30
ho dato un occhiata al link proposta ma penso che non sia adatto al caso mio.
provo nuovamente a esporre l’idea.
Pensiamo ad un giornale online in cui ci sono diverse pagine (esteri, politica, etc..) tutte afferenti al sito internet miosito.it
L’idea di base è che possa avere un utente editore (con permesso di pubblicazione) per ogni pagina e diversi collaboratori.
Un collaboratore non può vedere il post di altri fino a quando l’editore non lo rende pubblico.
Grazie e Saluti
Massimo
September 27th, 2010 at 18:12
La struttura che immagino dovrebbe prevedere quindi dei gruppi di utenti con diverse autorizzazioni, in cui solo uno può pubblicare e gli altri sono solamente contributor, cioè partecipano e modificano.
Ogni gruppo potrà lavorare solo su determinate categorie assegnate.
Dopo la pubblicazione i contenuti saranno visibili a tutti.
Ti sembra che potrebbe andare?
Per risolvere la cosa senza interventi pesanti nel codice potresti dare un’occhiata al plugin Role Scoper. E’ più complesso rispetto agli altri, e l’ho solo testato per curiosità finora, ma non mi aveva dato problemi..
September 27th, 2010 at 18:24
l’idea però era quello di non utilizzare le categorie come discriminante.
In pratica sarebbe interessante avere la possibilità di codificare gli utenti secondo un altro livello organizzativo
September 27th, 2010 at 19:42
Quindi non vorresti utilizzare le categorie ma quale criterio organizzativo?
October 13th, 2010 at 19:02
Ciao, se invece volessi permettere ai sottoscrittori di postare un nuovo post, tramite un modulo front end che già ho a disposizione, che codice mi conviene utilizzare?
Grazie per l’eventuale disponibilità!
October 14th, 2010 at 16:11
Ciao Silvio,
le soluzioni sono diverse. Ma la più semplice è sicuramente optare per il plugin TDO: http://wordpress.org/extend/plugins/tdo-mini-forms/
Con quello puoi permettere agli utenti di scrivere direttamente nei post/pagine.
Pensi che possa esserti utile?
October 14th, 2010 at 23:21
Ciao Mattia, ottimo plugin quello che mi hai consigliato, l’ho subito scaricato e messo tra i “classici” da tenere in considerazione per i prossimi lavori!
Al momento ho risolto con User Role Editor, un plugin utile per modificare i permessi dei vari utenti. Ho optato per questa scelta in quanto maggiormente compatibile con altri due plugin che uso per gestire il progetto a cui sto lavorando.
Se vuoi ti tengo informato in quanto è prossimo alla fine, credo ancora un mesetto o poco più, il tempo di sviluppare un pò di codice mancante!
Mi farebbe piacere avere un parere da qualcuno più esperto di me!
October 15th, 2010 at 08:28
Ben volentieri, aspettiamo di vedere la tua creazione!
January 27th, 2011 at 14:36
Ciao sto creando un sito anche se è ancora in cantiere in locale!
Ho provato ad aggiungere il codice da te pubblicato ma mi da questo errore: “Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in C:\Users\Davide\Documents\wp prova\xampplite\htdocs\wordpress\wp-content\themes\swift\functions.php on line 117″ sai dirmi il perchè? dove ho sbagliato? grazie in anticipo!
March 1st, 2011 at 17:59
Salve a tutti. Io ho creato con lo strumento testo libero, un widget dove sono linkati alcuni dei temi (url per attivarli es. http://127.0.0.1/wp/wordpress_it_IT_3_0_4/wp-admin/themes.php?action=activate&template=acid-rain&stylesheet=acid-rain&_wpnonce=294d0de250) di cui dispone il mio sito (adesso è solo una prova in locale, quando tutto andrà bene verrà pubblicata nel sito), vorrei fare in modo che i miei visitatori possano cambiare il tema. Inizialmente avevo messo le mani sul file themes.php e commentato le righe con “current_user_can( ‘switch_themes’ )” cosichè non venisse effettuato un controllo quando un visitatori tentassero di cambiare tema cliccando su un link. però mi appena tento di cambiare tema (dopo aver effettuato il logout di admin) mi reindirizza al form di login. Come posso fare??? ringrazio tutti quelli che si interesseranno ciao
March 1st, 2011 at 18:03
Perchè non provi con un plugin adatto, tipo questo?
http://wordpress.org/extend/plugins/wordpress-theme-demo-bar/
March 26th, 2011 at 14:52
Ciao,
ho seguito il tuo codice, la mia idea era quella di fare in modo che gli editor avessero l’opportunità di gestire gli utenti e attriburne i permessi, ma la voce Utenti nel menu degli editor non vuole comparire. Il codice che ho usato è questo:
//Attribuisce la gestione utenti all’Editor
function add_role_caps() {
global $wp_roles;
$role = get_role(‘editor’);
$role->add_cap(‘edit_users’);
};
add_action (‘admin_head’,'add_role_caps’);
Saresti così gentile da dargli un occhiata e dirmi cosa non va?
Grazie infinitamente.
March 26th, 2011 at 15:11
Ciao volevo dirti che ho risolto. Grazie lo stesso.
July 23rd, 2011 at 17:47
Son of a gun, this is so heuplfl!