web-dev-qa-db-fra.com

Multisite dans un sous-dossier - Comment faire en sorte que les nouveaux sites soient dans le même niveau de sous-dossiers que le site principal

J'ai la situation suivante. J'ai un WP Multisite installé dans le sous-répertoire:

my-domain.com/subfolder/wp-multisite-root

Maintenant, normalement, les prochains sites ajoutés seraient créés comme ça

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

Y a-t-il un moyen de le créer ainsi?

my-domain.com/subfolder/wp-multisite-root
my-domain.com/subfolder/site1
my-domain.com/subfolder/site2
my-domain.com/subfolder/site3

Il y a encore un truc. my-domain.com/subfolder/ contient une autre application non wordpress.

3
HoGo

Après ces années, j'espère que cela répondra toujours à votre question ...

Je pense avoir la situation que tu veux. Bien que je n’ai pas l’installation de Wordpress dans '/ sous-dossier /', mais j’ai une installation 'dans un sous-répertoire' par langue et au même niveau:

 my-domain.com/nl/ -> this is primary installation, site id = 1 
 my-domain.com/en/ -> this is the first site created by multistie, site id = 2
 my-domain.com/de/ -> this is the second site created by multistie, site id = 3

Cela nécessite un peu de "piratage" dans la base de données, mais c'est très facile.

Étape 1: Assurez-vous que votre installation "racine" multisite fonctionne comme prévu dans son sous-répertoire. Dans mon cas, j'ai eu ce qui suit dans 'wp-config.php':

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // allow sub-directory install (true for subdomain install)
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);

(bien en réalité je n'ai pas '/ sous-dossier' :))

Étape 2: Créez maintenant votre premier site via multisite dans un sous-dossier. Lorsque vous entrez le nom de dossier 'site2', Wordpress vous dit qu'il sera créé de la manière suivante: mon-domaine.com/sousfossier/wp-multisite-root/site2

Étape 3: Ouvrez phpMyAdmin/directAdmin Dans la table wp_blogs, éditez l'entrée du site que vous venez de créer. Nous devrons en modifier la path. Cela peut être fait avec la requête suivante:

UPDATE `wp_blogs` SET `path` = '/site2/' WHERE `wp_blogs`.`path` = '/wp-multisite-root/site2/';

Modifiez le nom de domaine et le nom du site en conséquence. Recherchez également l'identifiant du site mentionné ici. Si c'est le premier site supplémentaire créé, ce sera l'ID 2, comme dans mon intro.

Étape 4: Regardez dans la table wp_<SITEID>_options. Dans notre cas avec l'ID de site 2, il s'agira de wp_2_options. Là nous devrons changer le option_valueoption_name est 'siteurl' et 'home'. Cela peut être fait en exécutant les requêtes suivantes:

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';

Encore une fois, changez le domaine et le nom du dossier en conséquence. Vous remarquerez que nous supprimons "wp-multisite-root" de l'URL, donc site2 sera au même niveau que "wp-multisite-root".

Étape 5: Actualisez wp-admin et vos sites seront répertoriés comme vous le souhaitez.

5
Piemol

La réponse de Piemol est excellente et a fonctionné pour moi. Cependant, je n'ai pas pu me connecter à aucun de mes sites, à l'exception du site principal. Lors de l’inspection de mes cookies, j’ai découvert que WordPress fabriquait un cookie uniquement pour mon site principal et non pour les autres sous-répertoires. Pour utiliser l'exemple d'OP, il créait un cookie pour /subfolder/wp-multisite-root, que /subfolder/site1 ne pouvait pas utiliser.

J'ai fouillé dans WordPress pour voir ce que je devais corriger, et j'ai finalement ajouté ce code à mon plugin personnalisé pour corriger les chemins utilisés pour les cookies:

define('COOKIEPATH', '/subfolder');
define('SITECOOKIEPATH', '/subfolder');

Dans mon cas, la structure de mon site est en réalité semblable à celle de Piemol, alors j'ai corrigé mes chemins de cookies pour qu'ils soient la racine:

define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
2
caramiki

La solution la plus simple consiste à configurer my-domain/subfolder/ le répertoire d'installation de WordPress et l'URL de base, puis à activer le multisite configuré pour utiliser des sous-répertoires.

0
Chip Bennett