Convertire un’installazione WordPress singola in una Multisite

Wordpress MultisiteImmagine originale tratta da Fotolia
Tempo stimato di lettura: 8 minuti, 43 secondi
Pubblicato il 28 Gennaio 2014

In questo articolo presento una guida passo passo per convertire una classica installazione WordPress in un’installazione Multisite.

Per chi fosse a digiuno su questa tecnologia faccio un breve cappello. WordPress Multisite è una funzionalità presente nativamente dalla versione 3.0, precedentemente conosciuta con il nome WordPress Mu (WordPressµ), che consente di creare e gestire più di un sito/blog WordPress sotto “un’unica amministrazione”. Un’installazione multisito accomuna infatti la gestione di: utenti, temi, lo stesso wordpress e plugin creando, in particolari casi, un modo estremamente comodo per gestire i siti di un network che per design, scopo e funzionalità risultano simili.

L’utilizzo più comune della funzionalità Multisite di WordPress è quella legata ai grandi network di blog o alle testate giornalistiche online che hanno molteplici sotto-blog su varie tematiche e possono così gestire le utenze, gli aggiornamenti di WordPress, le modifiche ai temi, ecc agendo direttamente in un unico punto (ad esempio il file css del tema condiviso su tutto il network).

Personalmente ho utilizzato questa funzione anche per creare siti WordPress multilingua dove il budget per l’ottimo plugin WPML non esisteva (pensate per il sito 🙂 ). Qualcuno potrebbe suggerirmi altri plugin gratuiti, tipo Qtranslate, ma non mi soddisfano.

Attivare WordPress Multisite

Veniamo al dunque. Come detto partiremo da un installazione esistente, quindi la procedura è leggermente diversa da quella descritta nella guida ufficiale e bisogna fare attenzione su alcuni passaggi. Consiglio, soprattutto se lavorate direttamente sul sito online, di effettuare un backup dei file del sito e un dump del vostro database MySql.

Passo 1: Aggiungere la costante WP_ALLOW_MULTISITE

Loggatevi per cominciare nel vostro backend WordPress ed assicuratevi di avere la funzionalità Permalink su un valore diverso dal default (consigliato anche per un aspetto SEO) La prima cosa da fare è aprire il vostro file wp-config.php ed inserire appena sotto la riga con la costante WP_DEBUG quanto segue:

/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );

/* That's all, stop editing! Happy blogging. */

Salvate (eventualmente caricate il vostro file online via ftp PS: lo darò per scontato nei prossimi passaggi) e ricaricate la pagina dell’amministrazione Wp in cui vi eravate appena loggati. La direttiva che abbiamo appena inserito attiva una nuova voce di menù, sotto il già presente Strumenti, che si chiama Configurazione della Rete.

Accedete a questa pagina. Potrebbe venirvi chiesto di disattivare tutti i plugin attivi.

Passo 2: Creare il network di siti WordPress

installazione wordpress multisite

Giunti nella pagina suddetta vi troverete una schermata molto simile a questa (i pallini rossi indicano i passaggi fondamentali):

Al contrario della classica installazione Multisite fatta “da zero” non vi verrà chiesto che tipologia di Network volete creare. Ne esitono due:

  • SubDomain, il vostro network avrà i sotto-siti su domini di secondo livello tipo: it.sito.com, de.sito.com, ecc. E’ leggermente più complessa da realizzare perchè richiede più libertà di configurazione (es. Wildcard Dns) lato hosting. Per chi fosse interessato consiglio di dare un’occhiata alla documentazione ufficiale.
  • SubFolder, ovvero sottocartelle. Il vostro network avrà i sotto-domini nella forma: sito.com/it, sito.com/de, ecc. In questo articolo procederò ad attivare questa modalità. In giro si legge che se parti da un sito esistente l’unica possibile è la prima… bhè posso dire con certezza che ho siti live convertiti che funzionano benissimo quindi smentisco in toto e ve lo dimostro proseguendo nella lettura 🙂

Nel nostro caso non ci viene chiesto niente. Cliccate su Installa e procediamo.

Passo 3: Inserire le regole nei file htaccess e wp-config.php

convertire in multisite wordpressNella nuova schermata che avete ora davanti il nostro caro amico WordPress ha creato una serie di regole e configurazioni che vanno inserite nei file indicati. Dovrete copiare il codice ed inserirlo nei file indicati. La pagina che vedete somiglierà a questa:

Di default, risulta “attivata” la modalità subdomain. Come vedete la costante SUBDOMAIN_INSTALL ha valore true e questo significa che il Multisite verrà attivato in modalità subdomain. Lo scopo di questa guida però è un’installazione di tipo subfolder, per cui procedete come segue.

Copiate il codice che vi suggerisce la pagina nel file wp-config.php, ma abbiate cura di cambiare il valore della costante SUBDOMAIN_INSTALL a false. Dovreste avere qualcosa di molto simile a questo:

define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'www.sito.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Salvate e ricaricate la pagina (o riaccedete dal menù Configurazione della Rete). Grazie a questo importante passaggio forzerete WordPress a rigenerare le regole del file htaccess per la modalità subfolder che abbiamo scelto. Chiaramente se state eseguendo la subdomain continuate con le regole suggerite al primo accesso.

Nel vostro file htaccess (che trovate nella root ftp del dominio) andate a sostituire le precedenti regole di WordPress con le nuove suggerite. Per la nostra guida dovreste avere esattamente queste regole:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Salvate tutto e loggatevi nuovamente su WordPress (a fine pagina c’è un comodo link “Log in”).

Se riuscite a loggarvi potete farvi il primo piccolo applauso. La parte più rognosa è superata. Se non riuscite a loggarvi, vi presenta una pagina bianca, il server da 500 o qualsiasi altro comportamento “non normale” rimuovete le regole appena inserite nell’htaccess e nel file wp-config.php e provate a ricominciare da capo. Se il problema persiste potreste provare a sentire il vostro hosting, a volte hanno particolari restrizioni che variano da caso a caso e che è impossibile prevedere.

Passo 4: Aggiungere i nuovi siti al network

Dal menù presente nella barra principale di WordPress accedete al menù I Miei Siti. Nel sottomenù a tendina troverete Gestione Network e un corrispondente ulteriore menù di secondo livello che riporta la voce Siti. Facevo prima a mostrarvelo… 🙂

Il menu: I miei siti

Da qui vedrete la tabella che elenca tutti i siti del vostro network. Nel nostro caso ci sarà solo il sito principale (quello da cui siamo partiti) e tramite il pulsante Aggiungi Sito presente di fianco al titolo della pagina potrete creare tutti i sotto-siti che vi servono.

Cliccando Aggiungi Sito dovrete compilare 3 campi:

  • l’indirizzo del sito (ovvero il suffisso di path del nuovo sito o l’estensione per il terzo livello)
  • il titolo del sito
  • l’email dell’amministratore

Aggiungere un nuovo sito

Cliccate quindi Aggiungere Sito e avrete creato il vostro primo sotto-sito del network e dal menù I Miei Siti potrete raggiungere la sua Bacheca e ritrovarvi nella sua amministrazione dedicata.

Il vostro database sarà ora popolato di nuove tabelle, una serie per ogni nuovo sito creato. Se il vostro database prefix è: my_wp_db_ ora troverete ad esempio, oltre alla tabella my_wp_db_posts, anche my_wp_db_2_posts dove il 2 rappresenta il sotto-sito con ID 2 che avete appena creato. Ecco un esempio:

database alla fine della procedura

Se tutto funziona correttamente, riattivate i plugin precedentemente disattivati e fate nuovamente un backup dei file e del “nuovo” database.

Problemi con la conversione di un’installazione WordPress Multisite

Come dicevo pocanzi, i problemi che si possono verificare non sono predicibili e dipendono molto dalle configurazioni dei server e delle particolari installazioni WordPress (magari customizzate).

Di una cosa sono sicuro, non è possibile passare al multisite se avete installato WordPress in una directory diversa dalla root del dominio (ci ho provato, se qualcuno ce l’ha fatta me lo faccia sapere 🙁 ). La soluzione in questo caso è un pò più complessa, ma sostanzialmente consiste nel far convivivere temporaneamente l’installazione in root e quella nella directory per poi spegnere la prima e procedere con il multisite come da copione.

Nella mia esperienza ho avuto un solo caso “anomalo”. Dopo aver fatto tutta la procedura visualizzavo correttamente il backend WordPress nel nuovo sottosito creato, ma quando accedevo al frontend del sito (il lato pubblico per intenderci) non venivano caricati i file css del tema. Dopo aver ripristinato file e backup sono ripartito da zero e sono ritornato nella medesima situazione (con grande rammarico 🙂 ). Ho quindi fatto un giro attorno alla scrivania, una piroetta sulla sedia e ho provato a salvare nuovamente la configurazione dei Permalink (sempre dal backend WordPress) e magicamente tutto si è risolto.

Rimuovere lo slug /blog dalla struttura degli url di un WordPress Multisite

Una delle cose che trovo più fastidiose di WordPress Multisite è che utilizza una struttura di permalink “fissa” per le categorie dei vostri post. In particolare viene aggiunto lo slug /blog ad ogni articolo del vostro sito. Passando quindi da un’installazione singola ad una multisite vi trovereste quindi ad avere url diversi da prima. Il vosto url sito.com/categoria/mio-post è ora diventato sito.com/blog/categoria/mio-post con tutte le controindicazioni del caso lato SEO. Una possibile soluzione è di impostare dei redirect 301 dai vecchi url ai nuovi, ma non è la strada migliore.
Lo /blog inoltre potrebbe non aver nessun valore per gli url del vostro sito ed essere addirittura fuorviante per i visitatori qualora il vostro multisite WordPress non abbia nulla a che fare con un blog.
Vediamo quindi come rimuovere lo /blog dalla struttura dei permalink. La procedura è un pò bizzarra ed invito chi volesse approfondire l’argomento a leggere questo articolo: http://praveenlobo.com/techblog/how-to-remove-the-blog-slug-from-the-permalinksurl-in-wordpress-multisite-installation-without-a-plugin/ dove si spiega in dettaglio sia quanto segue, sia la spiegazione tecnica sulla motivazione legata all’utilizzo dello /blog da parte del team di WordPress (motivi legati alle performace, per farla breve).
Ecco come fare:

  1. Dal menù: I Miei Siti -> Gestione Network -> Siti accedete tramite il link Modifica al vostro sito principale (quello assegnato alla root del dominio). Troverete una pagina che riporta tutte le configurazioni (options) legate al sito. Scorrete la stessa fino a raggiungere la configurazione relativa ai Permalink e rimuovete /blog dal relativo campo. Salvate la nuova impostazione utilizzando il pulsante a fine pagina.
  2. Accedete quindi alla Bacheca del vostro sito principale (/), quindi seguite il percorso: Impostazioni -> Permalink.Non salvate ed uscite da questa pagina cliccando altrove. La visita a questa pagina ha lo scopo di forzare un refresh delle rewrite rules
  3. A questo punto navigate il vostro sito verificando che tutti i link e le url siano funzionanti (e senza lo slug /blog!)

Voi, avete già usato la funzionalità WordPress Multisite? Se sì, mi piacerebbe sapere come… parliamone nei commenti!

PS: Mi farebbe piacere se mi aggiungeste alle vostre cerchie su Google Plus, vorrei entrare in contatto con i lettori di WebHouseIt e con chi, come me, ha una passione sfrenata per il web.

Shares