Moving Out of WordPress — My Detailed Experience
So it began. Then it concluded. After thinking about it for a while doing some detailed planning, I’m officially done with moving out of WordPress.com for my blog hosting service. I’m leaving after so many years of joy and pain (I’ve been on WordPress since 2015).
https://numericcitizen.me/bye-bye-wordpress-hello-again-ghost/
https://numericcitizen.me/special-announcement-some-important-changes-coming-soon/
https://numericcitizen.me/2023/01/20/a-message-to-my-readers-followers-on-wordpress-com/
https://numericcitizen.me/important-change-coming-to-this-website/
https://numericcitizen.me/a-message-to-my-readers-followers-on-wordpress-com/
I recently spent quite some time working on my WordPress.com exit. First, I prepared a project plan and make it one of my main focuses for the year. Second, I started to clean up my content. I reviewed in more or less detail all of my 766 posts. Many posts were deleted for different reasons: too much time-sensitive, irrelevant content, posts with many embedded tweets, etc.
All in all, I’m now down to 325 posts. These are the ones that I want to migrate out of WordPress. Here is why.
Why
- WordPress is needy. It requires a configuration to run correctly when using many plugins.
- Posting on WordPress requires too much work before a post becomes online.
- I want to focus more on content less on management. I value frictionless experiences.
- WordPress.com is very expensive. I was subscribing to the business plan because of my plugin usage, and I wanted to suppress ads for my readers.
- By quitting Twitter, there were many plugins that I was longer using.
- Many plugins are not free, and I was tired of paying for something with questionable value.
- Some plugins didn’t have the expected effects on SEO.
- I’m also on Ghost.org, and I feel it was redundant to keep both. Ghost is more polished, lighter to manage, cleaner to experience, and easier to use when posting content.
Expected gains
By moving out of WordPress, and merging content to Ghost, I’ll be gaining these features.
- Newsletter functionality which could allow me to send mail on an as-needed basis.
- A refreshed and more straightforward design is needed for a more responsive website.
- The possibility to post directly from Craft to Ghost. I’m not expecting to use this, but if I want, it’s there.
The process
The next step was to dig a little bit into the migration process itself which is based on the use of a plugin: Export to Ghost, which is free and is currently at version 1.2.1. The process is well documented on Ghost’s website and on the web in different articles. Issues arise when you start to look deeper into the process. Upon the first try to export my content, the process timed out and I got a message from WordPress.com’s gateway (nginx). Ouch. A second try produced the same results. I couldn’t image either losing my content or having to move manually. I thought it was an issue with my WordPress instance so I asked for some help from WordPress.com’s support for an investigation. These guys are always willing to help but they couldn’t really fix it. After a bit more of reading, I tried connecting to my WordPress website with FTP and saw what was in there. I was surprised to see the following:
The wp-content
folder contained another folder called “uploads
” and another named “ghost-exports
”. The files I was expecting to start downloading to my Mac were sitting right there. The JSON file is the file to import into the Ghost service, while the other zip file was the images referenced by my posts. Exploring the JSON file revealed a typical structure Ghost expects while importing content.
Oh, one thing that I learned: Firefox is a great tool for reading and parsing JSON files. Did you know that?
The “mobiledoc
” node is where the actual post content is. Digging a bit deeper, I could find HTTPS
requests for each image like the following example:
I was curious how this would work at the import stage. The ?w=124&
… was added by one of my WordPress plugin for some image optimization purposes. I wasn’t quite sure it would work when trying to import that file into Ghost. I started to search for tool to remove those HTTPS
parameters. Eventually, I gave up this path.
Then I started questioning my strategy. Maybe it was easier to just translate everything from WordPress to a more portable format, like Markdown. I did some manual testing by downloading a single post, then tried to edit the resulting file in Ulysses and then upload it to Ghost. It required too much manual work. On top of that, I couldn’t back-date the article I was trying to push on Ghost. I gave up that route too.
While searching for other solutions, I came across a web page on Ghost.org about a concierge service for Ghost(Pro) subscribers. I decided to write and ask If I was eligible. In less than 12 hours, I got an affirmative response. I was relieved.
Over the course of three days, we exchanged emails detailing the migration process and for answering my numerous questions about the expected results. I cannot overstate enough how great the support was. Just before the weekend, everything was moved and my domain name setup updated. The latter part was on my responsibility. I’ll post a more detailed article just for the DNS portion of the migration.
Plugins
A few words about WordPress plugins and Ghost Integration. WordPress plugin economy is large and deep. It’s a rich ecosystem. On Ghost, plugins are called Integration. I’m not seeing the equivalent ecosystem, but that’s ok. I’m using the follow integration.
- Unsplash for easy insertion of images into posts.
- Ulysses for easy posting from this wonderful writing app.
- Plausible for analytics.
- Stripe to receive subscription fees from subscribers.
- Custom integration for Craft support of posting from within the app.
- Custom integration for cross posting of content from my Write.as account.
Some important migration details
- The first thing was to change the DNS from WordPress to GoDaddy where my domain name is registered. I later discovered that I the domain needed to move to CloudFlare to support CNAME for the root domain, something GoDaddy don’t support.
- Domain name https://numericcitizen-introspection.blog will eventually lead to https://numericcitizen.me via the help of a forwarder. I still have this to fix.
- Links should with slug
/year/month/date
in them should continue to work, thanks to redirections that were created the Ghost’s support personnel. - I created a backup file with WordPress.com backup plugin for archives purposes. I extracted all my images and uploaded them on my DS720+ Synology NAS for easy access.
A few things were lost along the way
- The possibility of getting “likes” on WordPress posts. I don’t care.
- Past comments on each post couldn’t be migrated. That was expected. I’m a bit sad for this, but my content is worth more.
- My 154 WordPress.com followers. I don’t have a mean of moving them to Ghost. The only thing is to write a blogpost asking them to subscribe to my new blog, with Ghost’s newsletter feature. After publishing such article, I didn’t see any increase in subscribers. I expect most of my WordPress followers just don’t care or are simply inactive.
- Jetpack app and WordPress app on the iPad and iPhone, these are no longer needed.
What I’m going to miss
- Native application support on the iPad; Ghost doesn’t offer an iPad or iPhone app. The solution is to use Ulysses for my posting needs. I’m fine with this, I’m already using it for my Micro.blog posts.
- Custom themes are seemingly more limited on Ghost compared to WordPress. I’ll probably explore alternatives in the future.
- Posts path no longer uses the YYYY/MM/JJ/ document-title. I like it when the date if part of the path.
- RSS feed users on WordPress will need to update their subscription so their feed keep working.
Core web vitals change
The following are snapshots of my PageSpeed Core Web Vitals stats.
Before the migration
After the migration
Overall, migrating to Ghost is an improvement. I’ll be monitoring this over the course of upcoming weeks and months so see how this will affect my visitors statistics.
Conclusion
It took me many long hours to make this move, but it was well worth it. I’m using a more modern and easier platform for my publication needs. I had to refresh my knowledge of a DNS service too. Since 2015, I learn a bit of WordPress and I consider to be an intermediate user. I prefer Ghost now.
I hope you learn a few things with this article Feel free to post comments using the commenting feature of this Craft-made site.