Vediamo adesso come condividere gli stessi utenti fra 2 o più installazioni di WordPress.
Ossia come installare più CMS WP sullo stesso dominio server. Magari mettendo nello stesso sito nella home un’installazione e l’altra in un sottodominio. Insomma fare un qualcosa tipo multisite plugins. Ma ristretto a solamente due installazioni WordPress vediamo quindi come fare.
Vedo di dare qualche informazioni in più a quello che andiamo adesso a fare. Vogliamo fare in modo che gli utenti di un’installazione WP abbiano gli stessi ruoli e capacità di un’altra installazione WP sullo stesso sito ma con differente url.
Ovviamente per comprendere a pieno quello di cui andiamo a trattare dovete conoscere bene il funzionamento delle tabelle WordPress per questo vi rimando alla guida su WP che potrete trovare sulla costola.
Ora quella che vi sto per spiegare è unicamente una possibile implementazione, diciamo quella che secondo me è la più semplice. Ma non l’unica.
Quindi per raggiungere il nostro scopo è necessario che le due installazioni abbiano gli stessi utenti. Chiamiamo le due installazioni come installazione1 e installazione2
A questo punto andiamo nel file wp-config.php di installazione1 e modificihiamolo nel seguente modo.
$table_prefix='installazione1_'; define ('WP_DEBUG',true); define('CUSTOM_USER_TABLE',$table_prefix, 'users'); define ('CUSTOM_USER_META_TABLE', $table_prefix, 'usermeta');
In parte questa dicitura non sarebbe nemmeno necessaria per quello che andiamo a fare. Vediamone un attimo il funzionamento quindi.
- $table_prefix è il nome delle tabelle che andiamo a mettere nel DB MySql ossia installazione1_ inoltre è buona norma sempre modificare il valore di default wp_ contro i male intenzionati.
- define (‘CUSTOM_USER_TABLE, $table_prefix, ‘users’); forza l’installazione wordpress utilizzare installazione1_users come tabella dove archiviare i nomi degli utenti e in modo del tutto analogo funziona il rigo successivo per installazione1_usermeta.
Stesso discorso dovremo fare per la seconda installazione di WP ossia dovremo fare in modo che i dati dell’utente e i rispettivi ruoli siano archiviati negli stessi valori o recordo del database. Per fare questo dovremo fare qualcosa di molto analogo a quanto già visto.
$table_prefix='installazione2_'; define ('WP_DEBUG',true); define('CUSTOM_USER_TABLE', 'installazione1_users'); define ('CUSTOM_USER_META_TABLE','installazione1_usermeta');
Quello che abbiamo fatto è evidente ossia abbiamo forzato il WP ad utilizzare per la memorizzazione degli Utenti unicamente le tabelle installazione1_user e installazione1_usersmeta.
Unire due installazioni di WordPress su uno stesso dominio
Questo garantirà che le due installazioni 1 e 2 vedano gli stessi utenti ma all’interno delle due installazioni i due utenti avranno ruoli differenti.
Per esempio un davide che si è registrato su installazione1 con ruolo Editore comparirà senza alcun ruolo in installazione2 e viceversa.
Questo perchè le capabilities i ruoli e le capacità sono memorizzati nelle tabelle
tab_prefix_capabilities tab_prefix_user_level
E ancora una volta bisogna fare in modo che per installazione1 e 2 siano le stesse….ossia il procedimento che abbiamo appena visto….Oppure che abbiano gli stessi valori. Seguiamo questa seconda pista.
Per fare realizzeremo un plugins che sia composto da questa semplice funzione
function unisci_utenti($user_id,$role){ $prefisso_1='installazione_1'; $prefisso_2= 'installazione_2'; $caps= get_user_meta($user_id, $prefisso_1, 'capabilities', true); $level get_user_meta ($user_id, $prefisso_1.'user_level',true); if ($cap) { update_user_meta($user_id, $prefisso_2,'capabilities',$caps); } if ($level) { update_user_meta($user_id,$prefisso_2. 'user_level',$level); } } } } add_action('set_user_role', unisci_utenti',10,2);
Se non conoscete le funzioni ovviamente le potete creare nella nostra guida nella costola dell’articolo.
In ogni modo questo semplice plugins che andrà messo in /wp-content/plugins non fa altro che intercettare il settaggio set_user_role che si attiva alla creazione di un nuovo utente e memorizzare i dati delle capabilities e level nel database con prefisso installazione_2 . Ovviamente questo per l’installazione 1 mentre per la seconda installazione dovrete fare lo stesso gioco cambiando il valore di $prefisso_1 con $prefisso_2
Il gioco è concluso. Vi chiedo scusa se troverete degli errori, ma ho scritto questa guida in maniera un pò frettolosa.