This is part of a series of posts I wrote about migrating a number of WordPress sites I run from a single multi-site setup to separate single site configurations. Along the way I also switched to a more modern, and configurable, theme and a theme manager/editor.
- Migrating to a Single Site Setup
- Learning Elementor
- Wouldn’t It Be Nice if WordPress and Elementor Were Better Structured?
- Useful/Required Tools and Experience
- Initial Export/Import
- Files and Media Managers
- That Fourth Learning Curve
I’ve been running a number of WordPress sites under a single multi-site setup for many years. I went multi-site originally because I thought it would be easier to keep all the plugins and stuff coordinated that way. Over time I realized that wasn’t the case. Consider, for example, how the number of plugins expands when you start using different plugins in different sites within the multi-site setup. It gets ugly/messy very quickly. So I decided to migrate to multiple single-site setups.
It was an adventure. Ultimately satisfying but very much a learning process. Aggravated in part by the simultaneous decision to move away from the Genesis theme framework and adopt Elementor and switch to the Astra theme and move away from NextGen Gallery’s media tools. If you’re going to come down one learning curve why not four?
I’ll write about Learning Elementor and Wouldn’t It Be Nice if WordPress and Elementor Were Better Structured later. For now I want to focus on the multi-site to single-site portion of the journey.
There are plugins which at least claim to be able to export a single site from a multi-site and then restore it as single-site. But not many. The one or two I found were difficult to deal with and ultimately didn’t do the job.
Besides, the built-in WordPress export/import tools are quite good if limited in what they can do. You just need to be careful about a few things.
Useful/Required Tools and Experience
I tackled this migration as someone with 50+ years of varied programming experience, albeit none of which was professional. But drilling down into SQL databases to see how WordPress is storing stuff doesn’t phase me. And I had to do that a few times because I’d decided to migrate away from the NextGen Gallery media plugin while doing the migration (I switched all of my media display to WordPress’ built-in image and gallery widgets or Elementor’s more powerful alternatives).
For a basic WordPress multi-site site you can probably get by with just the built-in export/import tools. But if your site uses stuff even a bit more sophisticated you’ll likely need the following:
- a tool to download media files from the original site. I used FileZilla, which is an FTP client, because it’s open source, I like it, and I have FTP access to my hosting company account;
- a fast internet connection because media files tend to be large and you’re both downloading and uploading them;
- some knowledge of SQL, and access to the WordPress database underpinning both the old site and the new site
Bottom-line, the migration isn’t a big deal if you have some programming skill…but if you have a big site, with a lot of content, it takes a lot of time to get everything back in order.
The export phase is simple. Go to Tools -> Export on the site you want to export from the multi-site and export everything. You’ll get a file you can stash on your desktop system (I wouldn’t try doing any of this on a phone or tablet without easy to use local storage).
The harder part is on the import side. Make sure you’ve set up your plugin environment on the new single-site destination to mimic the plugins the single site you’re migrating depends on. This can be surprisingly difficult because while there are plugins to show you which multi-site plugins are being used by each site the report you get may not be 100% accurate. Or at least the one I used, Plugin Activation Status, wasn’t. I’m not slamming the authors; it did most of what I needed. But there’s still some iteration involved here.
A tedious part of the process is that you need to configure the plugins manually to match their settings on the original site. So far as I could see the built-in WordPress export/import process does not handle plugin configuration. It focuses on content, posts, pages and (some) files (e.g., image files). But you can often do this plugin configuration after you get the content moved over.
Once you think you’re ready import the file you exported. As I recall there’s an option during import to also grab files from the site you’re migrating back on the multi-site. Check that…although be aware that it doesn’t do a complete job of grabbing all the files you need (more on that in a bit).
If you’re lucky you’ll find out which plugins you forgot to install on the new site because the import report will list problems it had trying to import stuff into plugins that it couldn’t find. But you’ll also probably have to go through and look the new single site over, posts and pages, to see if anything got lost.
I was able to keep re-importing the file after adding new plugins. I didn’t end up duplicating anything.
Files and Media Managers
I was surprised to find that the image files and whatnot that I referenced in my posts and pagers didn’t, generally, get moved over using the built-in WordPress export/import tools. I thought check the box during the import process which says something like “go grab the files, too” would do the trick. But it didn’t for me.
I suspect the problem stems from my relying on a media manager. I use Media Library Folders Pro, by MaxGalleria, throughout all my sites and love it. It’s not perfect but it meets almost all my needs and the developers are very responsive to support requests (NB: I’m a paying customer because I like their stuff so much, but I have no other relationship with them).
The great thing about a media manager is that it lets you organize your media in your own custom folder hierarchy rather than being limited to the one defined by WordPress. The hard thing is that the custom structure isn’t handled by the built-in export/import tools. You have to move the files over yourself.
You may also have to recreate the links to your media in your posts and pages, which is a pain. I didn’t have to do that — Media Library Folders Pro seemed to take care of the migration behind the scenes once I’d moved the files over and “told” it about them — but your mileage may vary depending upon which media manager you’re using.
Moving all the media over manually wasn’t as big a deal as I’d thought it would be. But that’s probably because I did all the work over a fiber connection so transferring even a gigabyte of media didn’t take all that long.
However, I found I couldn’t just transfer over the actual files because I had to tell Media Library Folders Pro where they were. The only obvious way to do that was to import them into MLFP on the new site using its file upload feature after I’d created the necessary folder structure within MLFP.
So the transfer ended up being a two step process. I used FileZilla to download the media to my desktop and then used MLFP within the new site to upload them. I enjoyed reading a good number of online articles while the various downloads and uploads were going on.
That Fourth Learning Curve
Probably the most difficult part of the migration process wasn’t a migration issue per se but the result of my decision to stop using NextGen Gallery’s plugin to display media. While I liked NGG’s approach years ago, the widgets it provides — at least in the free version — aren’t terribly modern. They’re still essentially shortcode based or at least look and feel that way.
By contract Elementor provides a much more WYSIWYG visual editing experience. It’s also integrated in a way that I prefer: if I am defining a gallery of photos to display in a gallery widget I define the gallery as part of configuring the widget. I don’t have to set up, separately, the gallery and then configure the widget based on the gallery’s ID. Note that some of the Elementor widgets I ended up using are only available in the paid Pro version. OTOH, I think it’s well worth the money to go Pro.
Migrating NGG widgets to Elementor widgets is simple…provided you know which posts and pages are using the NGG widgets you need to replace. That’s where some knowledge of SQL came in handy. I was able to search the various NGG database tables to get the NGG IDs for image files and then search the WordPress post table (wp_posts) to identify the posts using NGG widgets and which images they were configured to display. At that point it was just a matter of editing the post, either in WordPress’ Gutenberg editor or the Elementor editor if I wanted a more sophisticated style and inserting the images. Time consuming but straightforward.
So there you have it. You can migrate a single site from a multi-site to its own standalone WordPress site using nothing but the tools built into WordPress. But you’ll likely need some other tools (e.g., FileZilla) if you use a media manager and some knowledge of SQL if you also plan on changing the widgets you use in the new site.