Ist es möglich, mit wp-cli eine Multisite-Instanz auf eine einzelne Site zu migrieren?

Es hat mir heute viel Zeit gekostet, eine Seite von https://example.com nach https://sub.example2.com von der WordPress Multiste Installation in die normale WordPress Installation zu konvertieren (lies: singlesite).

Seit ich wp-cli benutzt habe, dachte ich, dass es nur mit wp-cli möglich sein wird.

Ich benutzte wp-cli, um eine database zu exportieren. Da meine Instanz mit folgendem Präfix versehen wurde: wp_9_

Ich habe den Code folgendermaßen benutzt:

 wp db export --tables="wp_users, wp_usermeta, wp_9_posts, wp_9_comments, wp_9_links, wp_9_options, wp_9_postmeta, wp_9_terms, wp_9_term_taxonomy, wp_9_term_relationships, wp_9_termmeta, wp_9_commentmeta" 

Während ich später fand ich sollte etwas wie folgt verwenden:

 wp db export --tables=wp_users,wp_usermeta, $(wp db tables --all-tables-with-prefix 'wp_9' --format=csv --allow-root) --allow-root 

Für diejenigen, die nicht # verwenden

 wp db export --tables=wp_users,wp_usermeta, $(wp db tables --all-tables-with-prefix 'wp_9' --format=csv) 

Dann habe ich festgelegt:

 define('WP_HOME','https://sub.example2.com'); define('WP_SITEURL','https://sub.example2.com'); 

Aber ich stellte das Problem: Posts, Guids und Meta nicht aktualisiert … Normalerweise mache ich nie den nächsten Schritt, da es einfach in vielen Fällen funktioniert.

Aber ich war gezwungen folgendes zu tun:

 UPDATE wp_posts SET post_content = replace(post_content, 'https://example.com', 'https://sub.example2.com'); UPDATE wp_posts SET guid = replace(guid, 'https://example.com', 'https://sub.example2.com'); UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://example.com', 'https://sub.example2.com'); 

Außerdem musste ich den Upload-Pfad, den Post-Inhalt und sogar die post_meta aktualisieren, da der Upload-Pfad auf der Multi- /uploads/sites/9/ uploads /uploads/sites/9/ auf einer einzigen Site /uploads/ .

Dies sollte sich auch in den Posts und post meta wie folgt widerspiegeln:

 UPDATE wp_posts SET post_content = replace(post_content, '/uploads/sites/9/', '/uploads/'); UPDATE wp_postmeta SET meta_value = replace(meta_value,'/uploads/sites/9/', '/uploads/'); 

Nach diesem Schritt kopierte ich manuell Dateien aus / uploads / sites / 9 / in den Ordner / uploads / der neuen WordPress-Instanz auf demselben Server mit dem Befehl cp . Leider habe ich nicht einmal wp-cli dafür in Betracht gezogen.

Ich frage, ist es möglich, diese processe vollständig mit wp-cli zu automatisieren? Es wäre ein großartiger Helfer beim nächsten Mal.

Solutions Collecting From Web of "Ist es möglich, mit wp-cli eine Multisite-Instanz auf eine einzelne Site zu migrieren?"

Verwenden Sie den 10up/MU-Migration : https://github.com/10up/MU-Migration

Wenn Ihre Installation mit mehreren Standorten nur über eine kleine Anzahl von Unterwebsites verfügt, können Sie die Export- und Importwerkzeuge aus dem Verwaltungsbereich einfacher verwenden.

Für jede Site in der Multi-Site-Installation können Sie eine Exportdatei herunterladen, die Blog-Posts, Seiten, Benutzer, Kommentare usw. enthält. Dann können Sie alle diese Dateien in dieselbe einzelne Site importieren. Könnte einfacher sein, als mit der database zu hantieren …

Anstatt diese MySQL UPDATE Befehle auszuführen, können Sie wp search-replace Befehl wp search-replace WP-CLI verwenden.

Beispiel: wp search-replace 'https://example.com' 'https://sub.example2.com'

Dies ist eine serialisierungssichere Suche und Ersetzung, so dass Ihre Meta nicht korrumpiert wird.

Weitere Informationen unter http://wp-cli.org/commands/search-replace/