The Great Migration – Moving from WordPress dot com to Self-Hosted

The Great Migration

When parent company Automattic announced just a few days ago that they were going to be selling user data from WordPress.com and Tumblr to Midjourney (Company responsible for LLMs), at first I just shook my head. I read the details, including the grisly fact that all user data has likely already been scraped and sold, including private data like unanswered asks on Tumblr and private blogs, and put it aside for a moment. Later, a paltry toggle switch to opt-out WordPress.com and Tumblr accounts (despite the data likely already being taken) appeared, and I thought: no.

We already did this. DeviantArt did it, with disastrous results. Google announced everything on the internet was fair game, especially if no opt-out was in place. I don’t know about you, but I’m sick of everyone taking my work to fold it into a machine and regurgitate it at a later date; I’ve had my artwork show up in who knows how many databases, had to opt out anywhere and everywhere I can, toggled so many switches, sent opt-out forms, signed up for opt-out websites, poisoned my future data, and everything in between. And honestly? I’m tired.

Will Automattic be the company that finally kills Tumblr?

Maybe.

It may seem pretty hopeless, too, like “what can I do about people just taking my data and using it without asking for consent” as it does feel pretty much like everyone is turning around and doing just that.

But you know one thing I can do? Take away hundreds of dollars in revenue to Automattic with one post:

Mastodon screenshot from user @aimeecozza: Listen, I'm so friggin disgusted over what is probably happening over at Automattic (Tumblr, WordPress dot com) so, if you have a blog over at WordPress dot com, I will help you migrate to a self-hosted WordPress install. Yes, for free. From a professional web dev.

Email me: aimee@foundationwebdev.com or send a contact form submission at www.foundationwebdev.com/contact/

The Great Migration

It takes some work, but for someone with a know-how of self-hosted WordPress, it can take mere minutes to move a site from an ecosystem like WordPress.com to a self-hosted install. Those minutes were what I was willing to donate, directly removing income from Automattic’s pocket. When my post went viral on Mastodon and Bluesky, my inbox exploded with requests, people hopped on to also offer assistance with migrations, give advice, and more. Over the last week, I’ve helped seven people move their site from WordPress.com to a self-hosted install (check out this great shoutout by Karen Lowry!), arming them with a cheaper plan and a better opt-out than the questionable toggle provided by Automattic. I have two more sites waiting to be moved, and more emails coming in daily.

Seven sites might not seem like much, but if it directly impacts Automattic’s bottom line for such a ridiculous decision, it’s worth it.

I imagine this is just the start.

WordPress.com vs WordPress.org

You may be thinking to yourself, Aimee, why does it matter if I move from WordPress.com to a self-hosted WordPress install? Won’t they have my data anyway and just sell that? If you’re familiar with WordPress.com vs WordPress.org, skip this section, but for those not in the know, it’s a little confusing, which is why the kind of brand damage Automattic is doing to the WordPress CMS is irreparable.

WordPress.org is a content management system (CMS). It’s an open source package, available for free for anyone to build on top of. It’s basically the framework for building something like a blogging website or even a business website, with some powerful features including a robust theme repository and plugin repository of other open source bits you can install and use of your own accord. A WordPress.org installation (Usually what people are talking about when they say “WordPress”) involves a hoster, a registered domain, and consistent maintenance here and there to update core, themes, or plugins. Data created on this CMS belongs solely to you, and you may grant your hoster some licenses in order to display it (check their terms of service). Data can sometimes be scraped by outside parties like Google or Bing, but you do have the ability – even if it’s a little technical – to turn that off, or make your site entirely inaccessible to anyone without a password, for example. This freedom means you can pick up your site and bring it to any hoster if you’re unhappy with your host, or pull it down onto your computer. The data is yours, no third party necessary.

WordPress.com is more like WP Engine – an optimized hosting platform for the open sourced WordPress CMS. It uses a modified version of WordPress; you sign up for a free account and they limit what themes you can use, and only allow you to use a handful of their pre-installed plugins (like the awful, awful Jetpack plugin). You can pay for a plan, of course, to connect your domain or allow you more themes and to actually use plugins from the repo. These plans, in my opinion, are expensive, and even at some of the higher tiers don’t ever allow you the full freedom that WordPress self-hosted installs do. The WordPress.com crew really doesn’t want you to potentially break your site, so they cut off a lot of functionality. Since you’re bound to the WordPress.com terms, and they own your database and hosting, technically, they can do as they please with your data, past and future. This is what we want to cut out by migrating away: give people power over their own data.

How to Migrate from WordPress.com

There are a few different ways you can migrate data from WordPress.com to a self-hosted WordPress install. Much of it depends on your plan, but each way requires a few steps:

  1. Locate your domain: you will want to change the nameservers at one point, and knowing where your domain is held is key to doing this.
  2. Find a hoster you’d like to use: You can use this link to use my preferred hoster (I’ll get a small kickback) Dreamhost, but most hosts will work well. Avoid GoDaddy, Bluehost, HostGator, and any EIG owned company: the reasons are many and it’s a simple search away to see why you won’t want to give these people your money. Other good hosts I’ve used are WP Engine, SiteGround, and Lithium Hosting.
  3. Set up a WordPress install on the hoster once you’ve paid.

These following tutorials assume a few things: you know how to install WordPress on your hoster either via SFTP/FTP/SSH, or the hoster’s provided installer. You know how to set up a database for that install. You know how to access PhpMyAdmin and what it’s for (if you opt not to use a search and replace plugin), plus how to get around in it in a basic sense. You know how to install plugins and themes.

Got all that? Let’s get your stuff over.

I have a free plan, or a plan in which I can’t use repo plugins

Sorry, this is going to be a lot more difficult for you.

First, check and see if your theme has been retired. Click into your site and go to Appearance > Themes. Find your theme that is active, and click the meatballs … and click info. If it says your theme has been retired, sorry, looks like theme shopping is in your future. But for now, you can move all your data over.

Go to Tools > Export. You’ll only need the content and not the media library, but you should take a copy of the media library just in case. If your site is very small, just a few posts and pages, you can take all content at once. An xml file will download to your computer. If your site is bigger, has a lot of posts, has a lot of media, etc, you’re going to want to split up your export. I usually do one or two years at a time, depending on the size of the site, and separate posts, pages, and feedback. You’ll end up with a bunch of xml files in the end. Once you’re sure you’ve got it all, head to the fresh install on your new hoster.

Go to Tools > Users, and create accounts for every author on your site. If you only have one author, you can skip this step.

Head to Tools > Import, and install the WordPress importer (bottom). Once it’s installed the install button will change to import, and you can click on it. Here, you’ll upload your first xml file. When you click the continue button, it will ask what user you want to attribute to. Select the correct user to be mapped to each, and make sure to check the checkbox for import attached media files. Then click go. This can take a long time, so you might want to come back and check on it. When it’s done, it should say “All set! Have fun!” and you can move to the next xml file.

The WordPress importer is kind of crap, though. It can crash mid import and tear down the database server from sending too many requests. If this happens, just wait until your browser window doesn’t have a loading icon anymore, and feed the same xml file through the import area over and over again until you get the “all set” message. It will do its best not to create duplicate pages/posts, and you’ll see a huge list of “[post] already exists” as you do this. Just keep uploading the file until you see the “all set” message on the end, and then you can move to the next xml file and do the same thing.

Once you’ve gone through all your xml files, you should have all your data moved.

If your theme has not been retired, go to your fresh install on your new hoster and go to Appearance > Themes and click Add New, then search for the theme name. If you can find your theme, install it an activate it. You’re going to have to go through Appearance > Customizer and copy over all of the same settings you have on your current site. You’ll want to reconfigure Appearance > Customizer, Appearance > Widgets, and Appearance > Menus, to start. It’ll take a little work to get everything exactly the same (or close) but I believe in you! You can do it.

If your theme has been retired, you’ll want to check for a nice new theme in Appearance > Themes. Some of my favorites are Understrap and Hestia, but you can use whatever you like.

I have a paid plan and can use plugins

This is going to be pretty easy for you!

Install UpdraftPlus plugin on both the old site and the new hoster.

Take a backup. It might take some time to finish. Then download all of the backup files.

Head to UpdraftPlus on the new hoster and upload your backup sets. Once they’re all uploaded, click “restore” next to the backup set.

I like to restore everything except uploads first, because uploads can sometimes take a lot of time. Restore database, themes, and plugins first. Check mark the “search and replace the database” and click continue. Once it reports as done, go ahead and run it through again just for the uploads. Your site should be functional and viewable at this point. You can head to yourwebsite.com/wp-admin to log in, but you probably don’t know what your login is, so you’ll need to do a password reset to log into the back end.

If you don’t have the “search and replace the database” option, you can just run the restore, but your site (wherever it is now) will redirect to your current site and you won’t be able to log in (yet).

The next step is to switch your nameservers over to your new host. This can take up to 24 hours to fully do, so set it, and come back to it tomorrow to work on it.

Once you know it’s been fully propagated, you can:

  1. Finish restoring your uploads (if you parted out the restore like I do and don’t have the search and replace checkbox)
  2. Search and replace your database if you did have the search and replace checkbox.

To search and replace the database, I like to use plugin Better Search Replace. Type in your current URL minus the http://, and the target URL minus the http:// (the domain you want it to be on). Select all of the tables, and run it through first as a dry run to make sure no errors occur. After it reports back, you can run it through a second time but for realsies this time. This should put your site on the correct domain so now you can access it at yourwebsite.com!

If, for some reason, you try to access it and you get “too many redirects”, chances are your host is trying to either redirect to a www version of the site, or https version of the site. You will have to conduct a second search and replace on the database to fix this, but first you’ll have to force the correct URL. You’ll have to head to somewhere you can edit the files (via FTP or the web file manager your hoster provides) and go to your home directory. Edit your wp-config.php file just above the “That’s it! Stop editing” comment add:

define( 'WP_HOME', 'https://www.thecorrecturl.com' ); 
define( 'WP_SITEURL', 'https://www.thecorrecturl.com' );

This should make your site accessible so you can run the second search and replace on the database. Once you’re done, you should be able to remove these lines from wp-config.php, but I usually just leave them since it’s so rare people are changing their URLs anyway.

Conclusion

While I am not offering free migrations at this point in time, you can certainly contact me for an estimate to migrate from one hoster to another, or WordPress.com to a self-hosted install if you’re unable to DIY it – or prefer a professional eye on it. Reach out to me to get started.

Subscribe to Foundation!

Sign up now to get notifications when new posts are made including tips, tricks, tutorials, and more. You can unsubscribe at any time! I'll never sell or share your email address.