So Long, WordPress!
So, as you can see, Everything is Oll Korrect! got a makeover. In short, I got tired of WordPress’s nonsense, and converted the blog to a static site using the Hugo framework. There’s still work to do, primarily in editing and republishing about 60% of my old posts, and the styling could also use some touching up. However, WordPress has become so unstable that I decided it’s best to get off that software as soon as I had something halfway presentable.
Now, some more detail.
Everything started on WordPress.com in 2007, and I migrated it to my own domain in 2011. I used Wordpress’s self-hosted version since the migration was easy (my web host had an automated WP installer, and moving the posts was straightforward), I was familiar with it, and at that point it was still a reasonably good product. There has long been criticism of WP, largely focusing on security and, after the introduction of the Gutenberg editor in 2017 (IIRC), user-friendliness. However, since this is a fairly simple blog, I found I could generally avoid WP’s problems by following a few best practices and installing the Classic Editor plugin to use instead of Gutenberg.
Around 2021, though, WordPress’s condition seemed to become terminal. For the previous decade, I think the site crashed two, maybe three times, and each of those crashes happened because of me screwing around with theme changes. Crashes ramped up quickly in frequency, though, to the point that the blog died five times in 2023 and once, just as a final middle finger from WP to me, just before the migration in 2024. Most of these were caused by WP’s own flagship Jetpack plugin, and for the last one I wound up having to contact my web host’s support people (who, to their credit, have always been very helpful).
Obviously, WordPress had to go. I asked for suggestions on how to replace it on my fediverse account and received a few good recommendations, one of which was Hugo, a static site generator. How this works, essentially, is that you work with your content (including configuration, themes, and such) locally, and Hugo converts that to plain, trusty old HTML and CSS. No crashing plugins, no malicious login attempts, none of that. Hugo does allow for more sophisticated features if you want them, but after dealing with WordPress’s bloat, I don’t.
Hugo isn’t terribly difficult to learn. If you’re computer literate enough that the command line doesn’t intimidate you and you’re willing to RTFM, you can use it. That said, I did run into a few obstacles, but nothing insurmountable.
My first question was, “How do I convert a WP site to a format that Hugo can work with?” Hugo’s documentation has a few options. I tried the WP plugin first, but it never successfully completed a conversion (I’m very willing to blame this on WP and not the plugin). The tool that did work takes a WordPress XML site export and converts that, which worked, but with some caveats.
First, tags and categories were conflated. Since this distinction is important to me, I’ve been manually correcting them post-by-post. On the bright side, this allows me to standardise my tags and categories, but I do have to give myself credit for actually being reasonably consistent in how I do my taxonomy. A born librarian, really.
Second, posts were dumped into a folder as one big pile. That’s a problem because my internal links were absolute, and WP had a different folder structure. So, I’ve had to change a lot of links from “itsollkorrect.com/blog/year/month/post-title” to “/blog/post-title.” Images had a similar problem, with the added nuisance that WP apparently saves a new version of an image every time you resize it in the built-in editor, so I have a glut of images that will never be used. I’ll have look for a script or something that can return me a list of unused images so I can delete them. For that matter, I could probably write a script to handle the URLs and tags, but I like checking each post anyway so I’ll keep doing it manually.
Speaking of images, Hugo didn’t seem to like the way the converter handled images with captions, so I’ve had to fix those, too. Hugo also doesn’t seem to like sites served from a subdirectory (e.g., “domain.com/blog” instead of “domain.com”), so make sure you set up your config files and internal links correctly.
Themes can be straightforward or not, depending on which one you use. I considered Ed, for instance, but it requires more finagling than I want to do right now; it also hasn’t been updated for a long while. I tried to use Paperesque, but every time I loaded my test site it never “took;” I just saw plain HTML with no styling, which is a bit too old-school even for me. I may return to it later, but for now I’m using Mainroad, which Just Works.
It also resembles Everything’s very first WP theme. (Real ones remember).
Actually replacing WordPress is easy enough. You uninstall WP by deleting its files and folders, then delete the database. I did make a backup first, of course. Since Hugo’s output is, again, just HTML and CSS, it’s just necessary to upload the site content to the appropriate folder. It was time-consuming because of the many, many unused images, but so it goes.
I didn’t bother with redirects. I haven’t looked at site traffic numbers in over a year, because frankly I’m not too worried about that. Needless to say, I also didn’t include any analytics nonsense.
Regarding which content to migrate, I’m moving almost everything. I started with the about page (now the home page) and the contact page, both of which received some overdue revisions. I removed the recommended reading page for now; I may revise and republish it later.
Next, I started going through the old posts, following the index. The “highlights” section was first, then the essays, Plato, Shakespeare, and literature. I’m essentially just working top-to-bottom. That will leave some “housekeeping” posts, most of which probably won’t be migrated since they’re irrelevant now. As for comments, I’m ambivalent. Most are well-wishes on the year-end posts, and of the rest I probably won’t bother with, but I’ll revisit the question later.
I think that covers everything. If you’ve made it this far, thank you for reading; more traditional posts are in the works.