For devs torn between modern static sites and old-school CMS power. Explores modern WP stacks, headless WP, and what actually works in real projects.
Press enter or click to view image in full size
Welcome to the great CMS war of 202
It’s 2025, and the CMS landscape feels like a battlefield. On one side, you’ve got the markdown-pilled Hugo fans preaching about milliseconds and Git-based workflows. On another, Ghost users sipping minimalist espresso while their blogs load in 0.2 seconds. And then, in the corner WordPress, the ancient beast of PHP, still somehow alive. And not just alive thriving.
CodeToDeploy
A Global Tech Community Sharing Daily Tips on AI, Tools, Trends & Tech careers. Curated by Top Engineers, Followed by…
medium.com
As a dev, I’ve been lured by every shiny new thing. Static site generators? Built five blogs with them. Ghost? Used it on two startup projects. Custom React CMS with MDX? Oh yeah, I’ve suffered through that too.
But when the dust settles, and deadlines loom, and the client starts saying words like “can we add a newsletter form and maybe a login?” I always end up back where I started: WordPress.
It’s not because I think WordPress is sexy. It’s not because I want to write PHP functions. It’s because WordPress still does the job better than most tools when you’re building for actual people, not just a perfect dev portfolio.
This article isn’t about defending WP with fanboy energy. It’s about explaining why, in the chaos of 2025 CMS choices, WordPress is still the most pragmatic tool for devs who need to ship, adapt, and build stuff that works.
This is what I am covering:
- Welcome to the great CMS war of 2025
- Static site generators Fast, clean… until they aren’t
- Ghost The aesthetic CMS for minimalists
- WordPress The messy CMS that just works
- WordPress today not the clunky beast you remember
- Headless WordPress Decoupled… with drama
- Real projects vs theoretical purity
- The dev reality check
- Conclusion WordPress isn’t cool, but it still wins
- Helpful tools, links, and real WP stack resources
Static site generators Fast, clean… until they aren’t
Let’s be honest: static site generators (SSGs) are catnip for developers. Markdown content, version control, zero databases, instant deploys to Netlify or Vercel it’s beautiful. Hugo, Astro, Eleventy, and Jekyll all promise the same thing: blazing speed and no bloat.
And for personal sites, documentation, or the classic “side project I’ll never finish,” they’re great.
But once you step into the land of real projects with real humans people who don’t push commits to update their About page things start to fall apart.
The dev dream:
- Push to Git → site goes live
- Lighthouse score: 100 across the board
- No admin dashboard, no database to secure
- Every page is HTML, every deploy is a dopamine hit
The real-world nightmare:
- “How do I add a blog post without learning Git?”
- “Can we add a contact form?” → Sure, let me stitch together Netlify Forms, custom JS validation, and maybe Zapier.
- “We need search.” → Cue: Algolia docs rabbit hole.
- “Can we schedule posts for next week?” → No. Just no.
Also, did I mention build times? Once your site hits hundreds of pages, even the fastest SSG starts gasping. Ask anyone who’s tried to build a large Astro blog on Vercel and watched their deploys go from 20 seconds to 6 minutes.
SSGs are elegant until you need dynamic stuff. And then you’re either bolting on services or regretting your minimalist life choices.
Press enter or click to view image in full size
Ghost the aesthetic CMS for minimalists
I’ll admit it: Ghost is cool. The UI is slick, the writing experience is distraction-free, and the speed is real. Everything feels like it was made by someone who actually cares about publishing, not just shipping features.
If you’re a solo blogger or running a publication with a small team, Ghost feels like a dream.
Why devs love Ghost:
- Built-in membership and newsletter features
- Clean REST API and fast performance
- Self-hosted or managed (Ghost(Pro)) both feel snappy
- Writing experience that doesn’t make you want to scream
It’s like the Apple of CMS platforms minimal, beautiful, curated.
But also like Apple, it has limits.
Where Ghost starts to crack:
- No plugin ecosystem. What you get is what you get.
- Theme customizations can get hairy fast
- Built on Node.js which is fine unless you need to integrate with a PHP-heavy environment or want shared hosting
- Doesn’t play well with edge cases (and every client becomes one eventually)
Real-world letdown:
On one project, a client wanted Ghost because it looked simple. We got it up and running. All good. Then they asked for:
- A custom donation widget (not Stripe)
- Integration with their legacy CRM
- Editorial roles with nuanced permissions
Cue sad violin. We either had to build everything from scratch or give up and tell them, “That’s not really possible with Ghost.” Ended up migrating them to you guessed it WordPress.
Ghost is perfect when your project is exactly what Ghost wants it to be. But start coloring outside the lines, and it becomes a fight.
WordPress the messy CMS that just works
It’s PHP. It’s ancient. It powers like, half the internet. And yes it’s the reason we all learned to fear the wp-admin
login screen.
But here’s the truth that keeps surprising me: WordPress still gets things done. No matter how many modern stacks I try, when the project gets weird, complex, or client-heavy, I somehow end up back here.
Why it works:
- Plugins for everything (eCommerce, SEO, forms, caching, payments)
- Endlessly flexible from blogs to marketplaces to landing pages
- Insanely large ecosystem themes, tutorials, dev forums, job boards
- Non-dev friendly clients can update content without touching code
- Local dev tools (like LocalWP) make setup painless
You don’t need to reinvent login. Or search. Or comment systems. Or admin panels. It’s all there whether you like how it’s written or not.
I’ve seen WordPress scale MVPs into full companies. I’ve handed off WP sites to non-technical teams that still manage them five years later. I’ve worked on SaaS products where WP was the marketing site, blog, documentation, and customer portal.
Is the codebase pretty? No.
Is it clean, DRY, or modern? Not always.
But when a project needs to ship next week and “we might add Stripe payments later,” WP is like: cool, I’ve got a plugin for that.

WordPress today not the clunky beast you remember
Let’s kill a myth: WordPress isn’t frozen in 2010. It’s changed a lot quietly, awkwardly, but seriously. If your WP mental image involves TinyMCE, themeforest bloat, and duct-taped shortcodes… I’ve got news.
The Gutenberg glow-up:
Back in 2018, Gutenberg (the block editor) was a disaster. Devs hated it. Users hated it. Now? It’s actually… kinda good.
Especially when you lean into it with modern block themes and tools like:
- Advanced Custom Fields (ACF)
- Block Lab or Genesis Blocks
- FSE (Full Site Editing) with theme.json controls
What the dev stack looks like today:
Here’s how I build WP sites now without touching bloated page builders or janky plugins:
- LocalWP for fast local dev
- ACF Pro to define real data structures
- Tailwind CSS baked into a custom theme (via WP Scripts or Laravel Mix)
- WPGraphQL to power headless setups or connect to frontend frameworks
- Custom blocks using React and ACF fields, instead of shortcodes
It’s not your dad’s WordPress anymore.
You can ship clean, performant, modern-feeling sites that don’t look or act like “a WordPress site.” It just takes a slightly different mindset and fewer plugins.
Bonus: You can still go traditional if you want
Need to slap up a landing page in an hour with an existing theme and Contact Form 7? That still works too. It’s like dev difficulty sliders beginner to power user, same platform.
Headless WordPress Decoupled… with drama
The term headless sounds cool. Feels like you’re doing something futuristic. React frontend, GraphQL API, no legacy theming freedom, right?
And sure, headless WordPress can be slick. Especially when paired with Next.js or Astro. You get the flexibility of a JS frontend with the content structure of WordPress. On paper, it’s the best of both worlds.
But in practice? It’s… complicated.
Here’s what you gain:
- Full control over your frontend (React, Svelte, whatever)
- JAMstack-friendly deployments (hello, Vercel & Netlify)
- Lightning-fast static builds + dynamic content when needed
- API-first content via WPGraphQL
But here’s what you lose (and fight for):
- Post previews hard to implement cleanly
- Authentication handling auth between frontend + WP backend is rough
- Caching do you invalidate the cache when a post updates? How?
- Content workflows editors can’t “see” their changes easily
- Plugins most traditional WP plugins expect to work inside a theme
And good luck explaining to a non-technical client why they can’t just “log in and edit the homepage.”
A real-world stack that can work:
For content-heavy sites where frontend flexibility is key (think SaaS docs or headless blogs), this combo has worked for me:
- WordPress (admin + content) hosted on WP Engine or Flywheel
- WPGraphQL + custom ACF fields for structured data
- Next.js frontend hosted on Vercel
- ISR (Incremental Static Regeneration) for performance
- Auth0 or JWT-based frontend auth (if needed)
But this isn’t plug-and-play. You’re basically building your own CMS wrapper around WordPress.
Headless WordPress is cool, but it’s not a shortcut. If anything, it’s WordPress on hard mode best used when your frontend really, really needs to break free.
When each CMS works best:
Press enter or click to view image in full size
Real projects vs theoretical purity
Dev Twitter is full of takes like,
“I built my personal blog with Astro, Tailwind, and MDX. It’s 100% static and deploys in 8 seconds.”
Cool. But have you ever tried building a site where real people clients, marketers, interns have to touch it?
That’s where theory starts to crumble.
Static sites in the wild:
- Great for developer blogs or docs
- Not so great when the client wants:
- Custom contact forms
- Dynamic filtering
- Scheduled posts
- User login
- Easy editing from their iPad
Adding these to a static site usually means gluing on third-party tools. Now you’re duct-taping Netlify Forms to Zapier to Firebase. And that beautiful “no backend” dream becomes a web of webhooks.
Ghost in the wild:
- Amazing writing experience
- Built-in newsletter, fast performance
- But limited extensibility kills it when you need more than content + email
- Example: I had a Ghost site where the client wanted an events system… nope.
WordPress in the wild:
It’s not pretty. But it gets things done.
- Want to add a booking plugin? Done.
- Need a form that sends to Slack and saves to the DB? There’s 12 plugins for that.
- Need a teammate to change the About page without breaking the homepage? Easy.
Real projects are messy. Requirements change. People ask for weird features at 10 PM. WordPress doesn’t panic it just shuffles over with another plugin and gets back to work.
The dev reality check
We all love clean code, elegant stacks, and solving problems “the right way.” But when you’re shipping weekly, billing clients, or trying to launch anything fast purity takes a backseat to pragmatism.
Let’s be real:
- Yes, WordPress is full of legacy PHP
- Yes, the plugin ecosystem is a chaotic jungle
- Yes, debugging someone else’s theme functions can make you question your life choices
But with the right setup, most of that pain goes away. You can write clean, modern code using custom themes, Tailwind, and block-based layouts. You can avoid the bloated page builders and build your own blocks with ACF or even native Gutenberg.
You’re not forced into spaghetti unless you install a theme named “Ultimate Business Pro Lite” from 2014.
What I’ve learned to live with:
- You won’t love every line of WP but you’ll love how much it gets out of your way when you need results
- You’ll deal with updates and plugin quirks but not building everything from scratch saves weeks
- You’ll still be a “real dev” even if your stack includes a few WP plugins
Modern WordPress gives you a middle ground:
You can ship fast without selling your soul to WYSIWYG builders. You can stay flexible without manually managing 20 headless services. You can focus on the product, not just the architecture.
WordPress isn’t cool, but it still wins
WordPress isn’t flashy. It won’t impress anyone at your next dev meetup. It won’t get you a job at Vercel. It definitely won’t land on the front page of Hacker News (unless someone’s complaining about it).
But if your goal is to ship fast, flexibly, and without reinventing the wheel every single time WordPress is still the best tool in the box.
Why?
- It scales from blogs to full-blown marketplaces
- Clients and editors actually understand how to use it
- The plugin ecosystem covers 90% of use cases before you even write code
- You can modernize it with GraphQL, Tailwind, and custom blocks
- And when it breaks, the solution is usually just a Google search away
People love to dunk on WP, but most of the hate is from devs who haven’t touched it since 2016. Modern WordPress isn’t perfect but it’s solid. And that matters more than chasing purity when you’re building things that need to work today.
So here’s the deal:
If you’re a dev torn between Ghost’s minimalism, Hugo’s speed, and WordPress’s messy magic?
Try them all.
But don’t sleep on WordPress.
It might just be the stable, chaotic neutral CMS your stack actually needs.
Helpful tools, links, and real WP stack resources
If you’re curious about trying modern WordPress or just want to avoid falling into the plugin pit of despair here’s a no-BS list of tools and resources I use (and trust) in real projects.
Dev tooling & stack starters:
- LocalWP Ridiculously easy local WP environment (free, cross-platform)
- Advanced Custom Fields (ACF) Must-have for structured data and clean admin interfaces
- WPGraphQL GraphQL endpoint for headless setups (yes, it’s legit)
- WP Engine or Flywheel Managed hosting with real support, not cPanel hell
- WP Scripts Modern JS + build tooling for custom blocks
Frontend:
- Tailwind CSS Drop it into your custom theme and never look back
- GenerateWP Handy code generators for custom post types, taxonomies, and more
- Block Studio Build Gutenberg blocks visually, great for hybrid teams
Learning & community:
- WPBeginner Basic stuff, but great for onboarding clients or junior devs
- Delicious Brains Blog Advanced dev takes, PHP-focused
- WPTuts (YouTube) Actually solid tutorials with modern workflows
- Post Status For staying plugged into WP dev + business news
That’s it the full stack, the honest tradeoffs, and the dev brain behind why WordPress still wins in 2025.
If you made it this far:
You either secretly love WordPress, or you’ve been burned by Ghost and Hugo enough to give the old dinosaur another shot.
Either way… welcome back.
Press enter or click to view image in full size
Top comments (0)