-
Notifications
You must be signed in to change notification settings - Fork 49
Description
Describe the bug
If a blog is exported from a multi-site installation without passing --blog_id and then imported into a single-site installation with a --new_url, then the search-replace command for uploads paths does not effectivelly replace wp-content/uploads/sites/$blog_id for wp-content/uploads.
Steps to Reproduce
Export the website from a multi-site installation using exactly the following command line options:
wp mu-migration export all myblog.zip --url=myblog.example.com
Then import it into a single-site installation using exactly the following command line options:
wp mu-migration import all myblog.zip --new_url=example.com/myblog
In our case, we noticed that the logo was not showing up after migration. It so happens that the theme we're using stores logo info in the wp_options table and the path was not replaced at all (note that the URL was replaced correctly):
MariaDB [myblog]> select option_name, option_value from wp_options where option_name = 'theme_mods_morning';
+--------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| option_name | option_value |
+--------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| theme_mods_morning | a:5:{i:0;b:0;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:2;}s:11:"logo_upload";s:71:"https://example.com/myblog/wp-content/uploads/sites/30/2019/10/mama.png";s:10:"search_bar";s:4:"show";s:18:"custom_css_post_id";i:-1;} |
+--------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Expected behavior
Uploads paths should have been replaced correctly throughout the database (and the logo should appear in our blog).
Environment information
- Plugin and version: MU-Migration 0.3.2
- Theme and version: Morning 1.02 (https://www.competethemes.com/morning)
Additional context
I did some investigation and I found that:
- Despite in the original installation
blog_id = 30, the exported.jsonfile containsblog_id = 1, and thus this line was never executed when importing. - The above happens because if
--blog_idis not passed when exporting, this line is never executed and then the.jsonfile ends up withblog_id = 1. - I don't really understand if this is an expected behavior of the
exportcommand (and then passing--blog_idwhen exporting is "mandatory" for the export/import case described here) or if it is a bug and this whole bug report should've actually been about this specific behavior. - If I add
--blog_id=30to the command line when exporting, the issue described in this bug report does not manifest itself.