As mentioned in my previous news post, I’ve had a few people ask about the migration process for my blog, as such, here’s a quick write up and my thoughts on it.


Migrating between hosts is never something to be taken lightly, in my case there were a some ups and downs in the process. These are my point form thoughts on the process this time:

  • The migration process should have been pretty straight forward, as I was going from WordPress.com to a WordPress self hosted site. WordPress has good export and import tools. The caveat to this is that WordPress.com doesn’t give you direct database access, so there are limits.
  • Finding a host is a challenge, I settled on DreamHost as they are well known and allow adult content (as long as it’s not illegal of course). I bought the Shared Starter WordPress hosting ($2.59 US/month for 3 years, includes a domain name for 1 year as well as a free SSL cert) as I didn’t need more than a single domain or e-mail. You do have to give your credit card info though, I did look at some anonymous ones that take bitcoin but the hassle seemed to much for what I wanted.
  • I ran in to a few problems due to my WordPress.com account being suspended, like not being able to export/import my media library properly. I had to use some a third party tool (MediaSync) to import my media from wordpress.com (after uploading it manually to the wp-content folder) and rebuild the database entries for them. If my account had still been active I wouldn’t have had to do this step as the WordPress importer would have pulled the media directly from WordPress.com.
  • After I had the media imported, I had to take the WordPress export files that contained all the content of my blog (blog posts, pages, menus, etc.) and do some basic search/replace on them (again, wouldn’t have been required if my account wasn’t suspended as the importer would have done this automatically). This was of course because references to thehandsthatlead.wordpress.com needed to be replaced with thehandsthatlead.blog. Simply loading them up in a text editor (they’re just xml files) and then search/replacing the urls and saving them back out fixed 99% of the issues. I did find some old Tumblr references still in them, so that was a good cleanup excersie as well.
  • I think I have lost 8 posts out of almost 3000 in the transition, my numbers don’t quite add up between the two sites, but that doesn’t seem so bad and I can’t say if the 8 posts were just corrupt so I didn’t really have them on the old site and just never noticed.
  • I did have some issues with some of the imported posts, but nothing that effected the front end. WordPress.com moved to the new Gutenberg editor too quickly in my opinion and that caused some weirdness during the transition so I had to manually check all of my upcoming posts to make sure they were ok. A few need a little TLC, but no lost data or anything.
  • The new theme I choose has support for featured images, so used a database script to auto assign a featured image to the ~3000 posts that I would never have been able to do on WordPress.com. I did find some plug-ins that should have done this without me messing with the database, but they didn’t seem to like the format my posts were in (don’t know if that was Gutenberg or something I did).
  • Another item I had to deal with at the database level was adding titles to all of my posts that didn’t have them. On WordPress.com, I basically only titled news posts, but with the new theme I needed to have a title to make the main page look good. So a quick SQL export of the posts and a bit of spreadsheet magic, created a SQL script to place the posting date in any post that didn’t have a title already.
  • The final bit of database work I did was to clean up the old Tumblr post metadata, basically when WordPress.com imported my old Tumblr posts, they added three bits of metadata to each post: the Tumblr permalink, a unique Tumblr ID, and a Tumblr attribution. The permalink and ID were used so you could re-import your Tumblr data multiple times and not get duplicates, the attribution was always blank, so I don’t know what that was for. A quick SQL delete statement took care of all of these as they are no longer used.
  • I’ve added several plugins that have been useful/replaced functionality from the old blog:
    • AgeGate: Used for age verification, something that probably should have been on the old blog, but on the free tier wasn’t possible to do.
    • Ajax Search Lite: A nice ajax based search system, so you get results as you type.
    • Featured Image Admin Thumb: Displays the featured image of a post in the post list backend.
    • GDPR Cookie Consent: Since WordPress and some of the plugins use cookies, better be complient 😉
    • Koko Analytics: A pretty basic visitor statistics package that runs on your local system instead of relying on Google or someone else.
    • LuckyWP Table of Contents: Automatically generates the table of contents for my short stories based on the header tags on the page.
    • Menu Icons: Allows icons to be used in menu’s, this is how I get the top row of my profiles to have icons beside the names.
    • Posts Like Dislike: The plugin that allows users to like a post/page.
    • Sortable Word Count Reloaded: Adds a word count value to the posts list in the backend.
    • TablePress: A table generator for my stories page (aka fancy javascript sorting 😉 ).
    • WP Word Count: Generates statistics about total word counts for the blog.
    • Yoast Duplicate Post: Allows you to “copy” a post to a new draft, I often use this for posting news or links to mcstories.com
  • The biggest issue I had was with the First World Bimbo Problem posts, as they are images created by hand, they all had the old wordpress.com url on them. I had to edit them one at a time, re-upload them, then go through each post and replace both the image and the featured image for each one. I haven’t gone back through any of the old FWBP posts to update them, but I didn’t when I leftr Tumblr either so I’m debating if I will or not. If I do I’ll look for a more automated way to do it, I had ~30 images to edit in this round, but the old posts are closer to 140 which is too many to do by hand.
  • I’ve been very paranoid about backups at the moment, so every time I make a major change I do an export and sync my media locally as well. I’ll look at a better backup solution at some point, and DreamHost does have a full site export feature so that may be good enough for now.

Overall it’s something that I should have done before this, but it has taken a lot of time to get things to where they are now, but most of that is just the number of posts in my queue. If this had happened six months ago (maybe 9) when I only had a dozen or so posts in the queue, then the vast majority of the time consuming work above would not have been required.

Things like the plugins would still have to be done, and new things like my stories page, changing the category/tags, etc. would all still have taken the same amount of time and effort.

Probably the single biggest sticking point I have is losing the original URL for thehandsthatlead.wordpress.com, but based upon the statistics that Koko Analytics has collected so far it looks like most people have found me again.

5