Ziwen

← Back to blog

A Year After Fleeing WordPress for Static Sites

A year ago I shut down the WordPress blog I had been running for five years and rebuilt it as a static site. Time to settle the account: was the migration actually worth it?

Why I left

The trigger was a Saturday-morning alert: my blog's homepage had slowed to four seconds. Hours of debugging later, the culprit turned out to be a plugin — unmaintained for three months — hammering an external API in the background. Fixing it was easy. The absurdity was harder to ignore: I was babysitting a PHP + MySQL production stack, applying security patches, watching plugin updates, and backing up a database, all to serve plain text pages that change once in a blue moon.

WordPress is great software. But it solves the problem of "non-technical people editing rich content in a browser," while my problem was "I want to write, and tinker with infrastructure on the side." Mismatched problem, mismatched tool. I didn't want my blog to be the most fragile — and least rewarding — part of my homelab to secure.

How I migrated

The move itself went smoother than expected. Three steps: export the XML from WordPress, write a hundred-line script to convert posts to Markdown (stripping shortcodes along the way), and render everything with a static site generator whose source I actually understand. Images came straight out of wp-content/uploads, and I kept the URL structure identical.

What actually ate time was the small stuff: the old theme's syntax-highlighting styles, hand-written HTML tables in ancient posts, dead external image links. My rule: fix what's fixable, and mark the rest "this image is lost to time." Ruins are honest too.

server {
    listen 443 ssl;
    server_name old-blog.example.com;

    # Permanent redirect for every old URL
    location / {
        return 301 https://ziwen.io$request_uri;
    }
}

What I lost

Honestly, a fair amount. Comments are gone — that one stings. A few old posts had accumulated dozens of genuinely interesting threads; I exported them as static text pinned to the bottom of each article, but new discussions now scatter across email and social platforms. The admin editor is gone too: writing a post now means opening an editor, writing Markdown, running git push, and waiting for CI. Live previews, scheduled publishing, multi-author workflows — all the things WordPress gives you for free — I either rebuilt badly or gave up on.

What I gained, and a checklist

The gains are measurable: page loads dropped from a second or two to under 100ms, one PHP-FPM and one MySQL process disappeared from the server, and the attack surface fell to zero — you can't inject pure static files. Backups collapsed from "database dumps plus file snapshots" to "the git repo is everything." The deepest change is psychological: the blog moved from my maintenance list back to my portfolio.

If you're considering the same move, here's my after-action checklist:

  • Keep URLs identical, or map every old link to a 301 redirect.
  • Disable caching plugins before exporting — cached markup pollutes the dump.
  • Audit shortcode replacement; it's where migration scripts most often miss.
  • Decide the fate of comments early: archive, third-party, or let them go.
  • Run redirects on the old domain for a while before decommissioning it.

One year in: no regrets. But if you publish often, thrive on reader interaction, and don't mind running a database, staying on WordPress is perfectly reasonable. There's no hierarchy of tools, only fit — and I happen to be the kind of person who would rather git push than click an "update plugin" button.