web-dev-qa-db-de.com

Multisite in Unterordner - So legen Sie fest, dass neue Websites in Unterordnern der gleichen Ebene wie die Hauptwebsite abgelegt werden

Ich habe folgende Situation. Ich habe ein WP Multisite im Unterverzeichnis installiert:

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

Jetzt würden normalerweise die nächsten hinzugefügten Sites so erstellt

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

Gibt es eine Möglichkeit, es so zu gestalten?

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

Es gibt noch einen Trick. my-domain.com/subfolder/ enthält eine andere Nicht-WordPress-Anwendung.

3
HoGo

Nach diesen Jahren hoffe ich, dass dies immer noch Ihre Frage beantworten wird ...

Ich glaube, ich habe die Situation, die Sie wollen. Obwohl ich die Wordpress-Installation nicht in "/ subfolder /" habe, habe ich eine Installation "im Unterverzeichnis" pro Sprache und auf derselben Ebene:

 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

Es erfordert ein bisschen "Hacken" in der Datenbank, aber es ist sehr einfach.

Schritt 1: Stellen Sie sicher, dass Ihre Multisite-Root-Installation wie vorgesehen in ihrem Unterverzeichnis funktioniert. In meinem Fall habe ich in 'wp-config.php' folgendes bekommen:

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

(Nun, in Wirklichkeit habe ich keinen '/ Unterordner' :))

Schritt 2: Jetzt erstellen Sie Ihre erste neue Website über Multisite in einem Unterordner. Wenn Sie den Ordnernamen 'site2' eingeben, werden Sie in Wordpress folgendermaßen erstellt: my-domain.com/subfolder/wp-multisite-root/site2 Das ist richtig. Wir entfernen den Ordner 'wp-multisite-root' manuell. T

Schritt 3: Öffne phpMyAdmin/directAdmin In der Tabelle wp_blogs bearbeite den Eintrag deiner neu erstellten Site. Wir müssen die path davon ändern. Dies kann mit der folgenden Abfrage erfolgen:

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

Ändern Sie den Domainnamen und den Site-Namen entsprechend. Achten Sie auch auf die dort angegebene Site-ID. Wenn es die erste zusätzliche Site ist, die erstellt wurde, lautet sie ID 2 wie in meinem Intro.

Schritt 4: Schauen Sie in die Tabelle wp_<SITEID>_options. In unserem Fall mit Site-ID 2 ist dies wp_2_options. Dort müssen wir den option_value ändern, wobei der option_name 'siteurl' und 'home' ist. Dies kann durch Ausführen der folgenden Abfragen erfolgen:

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

Ändern Sie erneut den Domänen- und Ordnernamen entsprechend. Sie werden bemerken, dass wir 'wp-multisite-root' von der URL dort entfernen, so dass sich site2 auf derselben Ebene wie 'wp-multisite-root' befindet.

Schritt 5: Aktualisiere wp-admin und deine Seite (n) werden wie gewünscht aufgelistet.

5
Piemol

Piemols Antwort ist großartig und hat für mich funktioniert. Es war mir jedoch nicht möglich, mich auf einer meiner Websites mit Ausnahme der Hauptwebsite anzumelden. Bei der Überprüfung meiner Cookies stellte ich fest, dass WordPress nur für meine Hauptseite und nicht für die anderen Unterverzeichnisse ein Cookie erstellt. Um das Beispiel von OP zu verwenden, wurde ein Cookie für /subfolder/wp-multisite-root erstellt, das /subfolder/site1 nicht verwenden konnte.

Ich habe den WordPress-Kern durchgesehen, um zu sehen, was ich reparieren musste, und am Ende habe ich diesen Code zu meinem benutzerdefinierten Plugin hinzugefügt, um die für die Cookies verwendeten Pfade zu korrigieren:

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

In meinem Fall ist meine Site-Struktur tatsächlich wie die von Piemol, also habe ich meine Cookie-Pfade als Root festgelegt:

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

Die einfachste Lösung besteht darin, my-domain/subfolder/ das WordPress-Installationsverzeichnis und die Basis-URL festzulegen und dann die Verwendung von Unterverzeichnissen für mehrere Standorte zu aktivieren.

0
Chip Bennett