it-swarm.com.de

Konvertieren Sie eine Multisite-WordPress-Installation in eine einzelne Site

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?

16
Tom J Nowell

Ich habe die folgenden Schritte ausgeführt, um eine Site aus einer Installation mit mehreren Standorten in eine einzelne Instanz zu extrahieren:

  1. Richten Sie eine saubere Kopie von WP ein, aber installieren Sie sie nicht
  2. Suchen Sie die Site-ID
  3. Kopieren Sie die Dateien aus blogs.dir/ID/files in den neuen Upload-Ordner WP
  4. Kopieren Sie das von der Site verwendete Design und alle verwendeten Plugins in die entsprechenden Ordner im neuen Ordner "wp-content"
  5. Erstellen Sie eine Sicherungskopie der Datenbank mit mehreren Standorten, jedoch nur der Tabellen für die Zielwebsite sowie der Benutzer- und Usermeta-Tabellen, die die MySQL-Workbench oder eine entsprechende Komponente verwenden
  6. Stellen Sie die Sicherung in einer neuen Datenbank wieder her und ändern Sie die Tabellennamen-Präfixe, damit sie alle gleich sind, z. 'wp_SITEID_' bis 'wp_'
  7. Verwenden Sie die MySQL Workbench oder den Abfrage-Browser, um die Benutzer- und Usermeta-Tabellen wie folgt zu ordnen:
    1. DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    2. DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    3. UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
    4. UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
  8. Beginnen Sie mit der Installation von WP, um einen wp-config.php zu erstellen. Klicken Sie jedoch nicht auf "Installation ausführen".
  9. Erstellen Sie eine Standard-.htaccess-Datei, wenn Permalinks verwendet wurden, oder besuchen Sie einfach die Permalinks-Seite in wp-admin
  10. Als Nächstes müssen Sie alle alten URLs in Ihrer Datenbank aktualisieren. Verwenden Sie im Idealfall ein sicheres Tool zum Suchen/Ersetzen wie das in wp-cli oder dessen Allzweckvorläufer Suchen/Ersetzen von DB durch Interconnect/it . Ersetzen Sie 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.

15
sanchothefat

Es ist möglich, die Multisite-Installation zu entfernen, ohne ein neues Blog neu zu installieren. Befolgen Sie die Schritte.

  1. Erstellen Sie eine Sicherung, einen Datenbank-Dump und eine Dateisicherung von WP-Inhalten
  2. Setze die Konstante WP_ALLOW_MULTISITE in deiner wp-config.php auf FALSE
  3. 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 );
    */
    
  4. 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
    
  5. 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.

  6. 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`;`
    
  7. Die folgenden Tabellen können gelöscht werden:

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (nur falls vorhanden)

    (wp_ in Datenbankpräfix ändern)

  8. 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.

5
bueltge

Eigentlich ist es möglich und ziemlich einfach zu tun; Ich habe es selbst mehrmals gemacht.

Es gibt da Dinge zu beachten.

  1. wp-config.php legt fest, ob es sich um eine Multi-Site oder eine Single-Site handelt
  2. .htaccess, das die Umschreiberegeln für die Unterstützung mehrerer Sites enthält
  3. die zusätzlichen Tabellen, die zur Unterstützung mehrerer Sites erstellt wurden

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

1
Steve

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

0
smhnaji

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.

0
user28829