Wie würde man bei einem WordPress Multisite-Netzwerk mit einem Hauptblog und unter der Annahme, dass der gesamte Inhalt in dieses Blog verschoben wurde, das Netzwerk wieder in eine standardmäßige WordPress-Installation ohne Netzwerk und ohne Multisite-Installation reduzieren?
Ich habe die folgenden Schritte ausgeführt, um eine Site aus einer Installation mit mehreren Standorten in eine einzelne Instanz zu extrahieren:
DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
wp-config.php
zu erstellen. Klicken Sie jedoch nicht auf "Installation ausführen".blogs.dir/SITE_ID/files
durch uploads
, und suchen Sie nach oldsite.com
, wenn Sie die URL Ihrer Site ändern, und ersetzen Sie sie durch newsite.com
.Ein bisschen Aufwand und Sie müssen vorsichtig mit den Datenbankbearbeitungen sein, aber das ist das einzige, was ich sehen kann, um eine einzelne Site aus einer vorhandenen Multisite mit all ihren Einstellungen usw. zu extrahieren ... intakt.
BEARBEITEN:
Wie von @Jake entdeckt, habe ich vergessen, die letzten Schritte zu erwähnen, die Sie möglicherweise ausführen müssen, z. Suchen/Ersetzen alter URLs. Ich habe die Liste entsprechend aktualisiert.
Es ist möglich, die Multisite-Installation zu entfernen, ohne ein neues Blog neu zu installieren. Befolgen Sie die Schritte.
WP_ALLOW_MULTISITE
in deiner wp-config.php auf FALSE
Entfernen oder kommentieren Sie die MU-Einstellungen in wp-config.php
wie folgt:
/**
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/wordpress/';
define( 'DOMAIN_CURRENT_SITE', 'localhost' );
define( 'PATH_CURRENT_SITE', '/wordpress/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
*/
Entfernen Sie die MU-Einstellungen aus .htaccess
, wie in der folgenden Quelle:
# BEGIN WordPress
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [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]
# END WordPress
Erstelle die Permalinks neu, im Backend wp-admin/options-permalink.php
und kopiere vielleicht das Ergebnis in .htaccess
, falls es für WP nicht möglich ist, Rechte zum Schreiben auf diese Datei.
Entfernen Sie nicht nützliche Einträge in der Tabelle users
; Verwenden Sie die Anweisung follow sql in einem Tool wie phpMyAdmin oder Adminer
`ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
Die folgenden Tabellen können gelöscht werden:
(wp_
in Datenbankpräfix ändern)
Jetzt haben Sie nur die letzten Tabellen anderer Blogs des Netzwerks. Wenn Sie diesen Inhalt auch verwenden wollen, dann exportieren Sie diesen vorher per WordPress-Export als XML und importieren Sie ihn jetzt in der sauberen Einzelinstallation.
Eigentlich ist es möglich und ziemlich einfach zu tun; Ich habe es selbst mehrmals gemacht.
Es gibt da Dinge zu beachten.
Wenn Sie die Definition (?) Für mehrere Sites in wp-config auskommentieren und Ihre Permalinks aktualisieren, wird die Site auf Single Site/Standardmodus zurückgesetzt. Dann müssen Sie nur noch Ihre Datenbank bereinigen.
Wenn Sie aus irgendeinem Grund nicht auf Ihren wp-admin zugreifen können, um die Permalinks zu aktualisieren, löschen Sie einfach Ihre .htaccess-Datei. WordPress erstellt es für Sie im Single-Site-Modus neu.
Ich werde mein Bestes tun, um den Link zu den Codes/dem Support-Artikel zu finden und die Antwort damit zu aktualisieren.
Hier ist ein Link zu einem Element im Support-Forum http://wordpress.org/support/topic/revert-to-single-site
Der sehr wichtige Punkt, der nicht übersehen werden sollte und über den weniger gesprochen wird, ist, dass Sie immer noch haben die Zeile:
define( 'WP_ALLOW_MULTISITE',
...
Es sollte aber auf den neuesten Stand gebracht werden
define( 'WP_ALLOW_MULTISITE', 0 );
Die grundlegenden Prozesse hier funktionieren auch in WP gut. 3.5.1 Eine Klarstellung: Wenn Sie Ihrer Unterwebsite einen Namen gegeben haben, müssen Sie die Links in der Datenbank ändern, um diesen Namen zu entfernen. Wenn meine Unterwebsite ... mysite.com/comics heißt, sucht Ihr WP nach den oben beschriebenen Schritten nach mysite.com/comics und zeigt Fehler in den Permalinks an. Bearbeiten Sie die Tabelle WP-OPTIONS und suchen Sie nach der Erweiterung/comics. Entfernen Sie sie. Vergewissern Sie sich auch, dass das Uploads-Verzeichnis auf den richtigen Speicherort verweist. Es wird möglicherweise weiterhin ein blogs.dir-Eintrag angezeigt und sollte jetzt stattdessen auf wp-content/uploads/verweisen.