Multisite in sottocartella - Come creare nuovi siti allo stesso livello della cartella principale
Mi trovo nella seguente situazione. Ho un'installazione WP Multisite in una sottocartella:
my-domain.com/subfolder/wp-multisite-root
Normalmente, i siti aggiuntivi verrebbero creati in questo modo:
my-domain.com/subfolder/wp-multisite-root
my-domain.com/subfolder/wp-multisite-root/site1
my-domain.com/subfolder/wp-multisite-root/site2
my-domain.com/subfolder/wp-multisite-root/site3
Esiste un modo per crearli così invece?
my-domain.com/subfolder/wp-multisite-root
my-domain.com/subfolder/site1
my-domain.com/subfolder/site2
my-domain.com/subfolder/site3
C'è un ulteriore dettaglio. my-domain.com/subfolder/ contiene un'altra applicazione non WordPress.
Dopo tutti questi anni spero che questa risposta sia ancora utile per la tua domanda...
Credo di aver trovato la soluzione alla situazione che descrivi. Anche se nel mio caso non ho l'installazione di Wordpress in '/sottocartella/', ho un'installazione 'in sottodirectory' per lingua, tutte allo stesso livello:
my-domain.com/nl/ -> installazione principale, site id = 1
my-domain.com/en/ -> primo sito creato da multistie, site id = 2
my-domain.com/de/ -> secondo sito creato da multistie, site id = 3
Richiede un po' di "hacking" nel database, ma è molto semplice.
Passo 1: Assicurati che l'installazione "root" del multisito funzioni correttamente nella sua sottodirectory. Nel mio caso ho il seguente in 'wp-config.php':
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // permette installazione in sottodirectory (true per installazione in sottodominio)
define('DOMAIN_CURRENT_SITE', 'my-domain.com/subfolder');
define('PATH_CURRENT_SITE', '/wp-multisite-root/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
(in realtà io non ho '/subfolder' :))
Passo 2: Ora crea il tuo primo nuovo sito tramite multisito in una sottocartella. Quando inserisci il nome della cartella 'site2', Wordpress ti dirà che verrà creato come: my-domain.com/subfolder/wp-multisite-root/site2 È corretto, rimuoveremo manualmente la cartella 'wp-multisite-root'
Passo 3:
Apri phpMyAdmin/directAdmin
Nella tabella wp_blogs
modifica la voce del tuo nuovo sito creato.
Dovremo modificare il path
.
Si può fare con la seguente query:
UPDATE `wp_blogs` SET `path` = '/site2/' WHERE `wp_blogs`.`path` = '/wp-multisite-root/site2/';
Modifica nome dominio e nome sito di conseguenza. Cerca anche l'id del sito menzionato lì. Se è il primo sito extra creato sarà ID 2 come nel mio esempio introduttivo.
Passo 4:
Cerca nella tabella wp_<SITEID>_options
.
Nel nostro caso con Site ID 2, sarà wp_2_options
.
Qui dovremo cambiare il option_value
dove option_name
è 'siteurl' e 'home'. Si può fare eseguendo queste query:
UPDATE `wp_2_options` SET `option_value` = 'my-domain.com/subfolder/site2/' WHERE `option_name` = 'siteurl';
UPDATE `wp_2_options` SET `option_value` = 'my-domain.com/subfolder/site2/' WHERE `option_name` = 'home';
Ancora una volta, modifica dominio e nome cartella di conseguenza. Noterai che rimuoviamo 'wp-multisite-root' dall'url, così site2 sarà allo stesso livello di `wp-multisite-root'.
Passo 5: Aggiorna wp-admin e i tuoi siti saranno elencati come desideravi.

L'installazione di un multisite all'interno di una sottocartella non mi permette di aggiungere un nuovo sito con dominio senza che i post appaiano come 404. Il dominio principale funziona bene, il nuovo funziona bene tranne i post, che appaiono come 404. Sono andato nei permalink ma non funziona, l'unica cosa che funziona è impostare nei permalink index.php/%postname%/
lì funziona bene ma questo fa apparire index.php
in tutti gli URL che esteticamente è brutto. Penso di dover sistemare qualcosa nel file .htaccess

La risposta di Piemol è eccellente e ha funzionato per me. Tuttavia, non riuscivo ad accedere a nessuno dei miei siti tranne quello principale. Controllando i miei cookie, ho scoperto che WordPress stava creando un cookie solo per il mio sito principale e non per le altre sottocartelle. Usando l'esempio dell'OP, stava creando un cookie per /subfolder/wp-multisite-root
, che /subfolder/site1
non poteva utilizzare.
Ho esaminato il core di WordPress per capire cosa dovevo correggere e alla fine ho aggiunto questo codice al mio plugin personalizzato per sistemare i percorsi utilizzati per i cookie:
define('COOKIEPATH', '/subfolder/');
define('SITECOOKIEPATH', '/subfolder/');
Nel mio caso, la struttura del sito è effettivamente simile a quella di Piemol, quindi ho corretto i percorsi dei cookie impostandoli sulla radice:
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');

Scusa, ho dimenticato di aggiungere che my-domain/subfolder/ contiene un'applicazione.

@ChipBennett questo sovrascriverebbe alcune delle configurazioni attuali del sito?
