
Why I Left WordPress for Payload CMS + Astro
As of this week, archondigital.com no longer runs on WordPress. It now runs on Payload CMS for content and Astro for the front end, and the old WordPress install is retired from the public domain.
That's not a small thing for me. This blog started on WordPress as archon-digital.com, then lost the hyphen a few months in. I even left once, for Jekyll in 2014 at archon.digital. By June 2016 I was moving back to WordPress at archondigital.com. So yes, I've broken up with WordPress before. Meanwhile I built client sites on it for over 20 years, most recently on the Bricks, EtchWP and ACSS stack.
I've also bet early on the web's next tools before. When I launched www.gov.ph on 26 July 2010, the day of President Aquino's first State of the Nation Address, I believe it was the first Philippine national government agency site to run on WordPress. Most agencies were on Joomla back then. President.gov.ph later claimed that first in a press release, but its revamped site only opened on 16 August 2010, three weeks after gov.ph went live. I was also one of the first here to put sites behind Cloudflare, at a time when the alternative was Akamai, a paid service that was expensive.
This post explains why I left WordPress, how I picked what came next, and what the actual move looked like. If you're one of my WordPress clients, stay for the last section.
A love-hate relationship
I started making WordPress sites in 2004, a year after it first came out. My first paid WordPress side gig came in 2006, for a martial arts club. I owe WordPress a lot. It paid my bills, built my name, and carried projects I'm still proud of. When a client needed a site by Friday, WordPress was how I said yes. For a long stretch of my career, it kept me afloat.
That's what makes this hard to write. Love for a tool is mostly gratitude, and gratitude makes you forgive a lot. I forgave the plugin that broke on update, the theme that fought me, the late night patching a site that got hit. I told myself that was just the job.
But somewhere along the way the forgiving turned into dread. I started to hate opening the dashboard to a wall of update notices. I hated explaining to clients why their simple site needed another paid plugin, another licence renewal, another security scan. Toward the end I didn't just tire of WordPress. I abhorred what maintaining it had turned me into: a caretaker of other people's code instead of a builder.
Then the people running the project started fighting in public, and the last of my trust went with it.
So this feels less like switching tools and more like the end of a long marriage. A marriage where we built a life together, which I don't regret, but I'd stopped recognising who we'd become, and where staying was eating up on my soul and costing me more than leaving. Then I saw my lawyer, Mr Good News; He got me joint custody and legal separation; I'm so happy that I can't stop crying; I'm laughing through my tears; I'm laughing through my tears...
That's from Sting's "I'm So Happy I Can't Stop Crying", and it's been on loop since I took the plunge this week. Relief and grief in the same breath.
My WordPress Milestones
A brief timeline of my history with WordPress as well as significant events related to it.
first install of WordPress
just got into blogging, fresh from a few months on Blogspot
(missed opportunity to say "Hello World" but screw that)
1st paid WordPress side gig
a local martial arts club bankrolled by a friend
archondigital.com v1
My build anything with WordPress phase
I was making CRMs, ERPs, Digital Signage Systems, Email Marketing all in a janky WordPress stack. Lots of lessons learned.
Lesson 1: Do not use WordPress for everything.WordPress gigs
started taking WordPress gigs for companies in the UK and UAE
developed a series of websites for the upcoming London Olympics (2012)
developed a series of websites for sponsored UK athletes for the upcoming London Olympics (2012). A combination of WordPress and plain PHP static websites. Joanne Jackson, Victoria Pendleton, among others
launched www.gov.ph
One of the first national governments around the world to adopt WordPress as a Content Management System.
Administrative Order 39 s. 2013
Part of the team that drafted the policy that created the Government Website Template.
Ten88 Digital
Startup founded. Created interactive experiences for events. Some apps and websites powered by WordPress.
WordPress services peak
Managing an estimated 64 WordPress installations simultaneously as a white-label dev/devOps unit. Anything from a box culvert contractor in Idaho, pest control website, real-estate firms, to a large law firm handling Mesothelioma cases.
Also managed WordPress and WooCommerce services for a five-star chain hotel. A few public personalities...
started using Bricks Builder
adopted Bricks Builder into my workflow after a brief stint with Oxygen. Also the first time I'd take on projects on using a modern dev-centric page builder that I liked.
Shutdown Ten88 Digital
Closed shop.
WordPress gigs keep me afloat as a freelancer/independent contractor.WordPress martial law
WordPress.org blocked WP Engine and released "Secure Custom Fields" with ACF Pro features, after WP Engine lost the ACF listing.
Legal cases
A court ordered Automattic to restore WP Engine's WordPress.org access and its ACF plugin listing.
Matt vs Kevin
Automattic's lawyers asked Automatic.css, a framework I build with, to rebrand away from the word "Automatic".
WP Engine lawsuit update
WP Engine's amended complaint alleged plans to seek royalties from 10 more hosts. Automattic says the claims are old. The case is ongoing.
WordPress 7.1.x: a run of security releases.
- On 22 September a critical remote-code-execution flaw (CVE-2026-87902) affected versions up to 7.1.1 and was fixed in 7.1.2.
- On 6 October, 7.1.3 shipped seven more security fixes, including stored XSS and SQL injection.
Mullen-coup
The board put Mullenweg on leave. About 33 hours later he regained control, then replaced the board and let the CFO and chief legal officer go.
Automattic layoffs across WordPress.com, etc
Automattic began staged layoffs across WordPress.com, WordPress VIP, comms and social, with no total or end date given.
The technical reasons
WordPress didn't break. It just kept costing more to keep standing. Taking the site apart for the move made that easy to see.
Plugin sprawl. Backups, SEO, image optimisation, cookie consent, two page builders. Each one was a vendor, an update cycle and a possible hole. They also leave junk behind: my uploads folder held 6,164 files (1.8 GB) for 332 actual attachments, mostly auto-generated crops, pre-optimisation backups, WebP copies and plugin folders.
A content model that fights you. My custom fields lived in ACF and my custom post types were bolted on. The REST API doesn't expose ACF by default, so getting my own content out meant restoring a database backup and pulling it out by hand.
Content and presentation glued together. Page-builder markup lives inside the post content. Change builders and you inherit the old one's shortcodes and wrappers forever.
A dynamic server for a mostly static site. Every page view ran PHP and hit MySQL for content that changes a few times a month. Caching plugins hide that; they don't remove it.
Security surface. The more plugins a site carries, the more of my time goes to patching and watching instead of building.
None of this is news to anyone who maintains WordPress for a living. What changed is that I now had a real alternative I trusted.
The bigger push wasn't code. It was watching the platform's leadership become a risk I had to explain to clients.
The governance reasons
WordPress the software is open source, but Automattic and its CEO Matt Mullenweg control WordPress.org, where plugins and updates come from. The last two years showed how much that matters. And so, the bigger push (in my decision) wasn't code. It was watching the platform's leadership become a risk I had to explain to clients.
I'm not taking sides in a lawsuit. My point is way narrower. When one person's dispute can cut off plugin updates for hosted sites, or take over a plugin my sites depend on, that's platform risk. I'd rather my clients' sites not ride on it.
The numbers are drifting too. Per W3Techs data cited here, WordPress's CMS share slipped from 63.2% (July 2023) to 58.8% (September 2026). Still dominant, but no longer the default it was.
How I chose Payload CMS and Astro
I picked a headless setup: Payload holds the content, Astro builds the pages. Splitting the two was the decision. Picking the tools came after, against four tests.
- I own the data. It sits in my own Postgres database on my own server, not in a vendor's cloud.
- The content model lives in code. Collections, fields and blocks are TypeScript files in git, reviewed and deployed like any other code. No click-built field groups to export.
- Editors still get a real admin. Drafts, versions, live preview, media library, roles.
- The front end is fast by default. Plain HTML, no JavaScript unless a component needs it.
Why Payload. It's open source (MIT), self-hosted, and TypeScript from end to end. It runs on Postgres (or even SQLite, and MongoDB), and its official multi-tenant plugin lets one install serve more than one site. Soon, archondigital.com and jon-cuevas.com will share a single CMS. Rich text is stored as structured data (Lexical), not HTML blobs, so content survives a redesign. One honest caveat: Figma acquired Payload in mid-2025. The difference is that my copy runs on my server under an open licence. Nobody can switch off my updates.

Why Astro. It ships static HTML and only hydrates what needs to be interactive. Its content layer pulls from Payload at build time, so visitors never wait on the CMS. Pages are built from blocks: each Payload block has a matching Astro component with the same name and fields. That gives me a page builder without a page-builder plugin. The same caveat applies here: Cloudflare acquired Astro in January 2026. It stays MIT-licensed and deployable anywhere, and I run it on my own server. I could easily have put both sites on Cloudflare Workers, but I had room on a server I already run, and I wanted to stay hands-on with tuning and improving it. Given how early I bet on Cloudflare, I don't mind who owns it now.

How it runs. The CMS is on its own server. Each site is its own Astro repo on a second cheaper server behind Cloudflare. I could've easily used Cloudflare workers/pages but decided not to for this time. Shared blocks live in a private package both sites install. Hit publish in Payload and the site rebuilds, then Cloudflare clears just that site's cache.
The move itself happened over a weekend, but the planning took far longer, because a lot was at stake. In fact, this entire exercise was a dry run for a much larger public-sector project, where auditability and stability matter even more. More on that when it launches (real soon).
The move: archondigital.com, WordPress to Payload + Astro
The content moved over two days (22–23 October) and the domain switched on 26 October. Every published post kept its original date, and every old URL redirects to its new home.
| WordPress | Payload | Count |
|---|---|---|
| Published posts | Posts, original dates kept | 168 |
| Categories / tags | Categories / Tags | 10 / 167 |
| Media library | Media (originals only, no auto-generated crops) | 300 images |
| ACF "Custom Layout" fields | A display group on each post (hero layout, background, video) | 86 posts |
| Custom post types | Milestones, Quotes, Banners, Projects | 19 / 5 / 6 / 1 |
| Pages + front page | Pages built from blocks | 4 |
| Approved comments | Threaded comments | 3 (plus hundreds more to be recovered from older backups) |
| Old post, category and SEO-plugin URLs | 301 redirects | 190+ |
Disclosure on use of Artificial Intelligence:
Since mid to end of 2025 I have been working on what you would now call an Agentic AI workflow. I didn't know what it was called then, to me it was just simply organizing my dev workflow and my other tasks and finding a way to use the best of Cloud-based AI solutions (Cursor and Claude) with local AI models for the more simpler and repetitive tasks.
My current setup is still a mess but it involves one M4 Mac Mini I got last year that I leave instructions to when I leave the house. I still run QA myself and make changes that would suit me.
This helped me migrate and sift through thousands files of junk. Crawl my old SQL files and the Wayback Machine to recover comments I accidentally deleted at some point.
I have a lot of thought about this shift to machines running our businesses but that would be for a later post.
How it went
- Model the content in Payload first. Posts, media and taxonomies, then a collection for each custom post type and a field group for each set of ACF fields.
- Pull posts through the WordPress REST API. A one-off import script reads the public API, so it needs no WordPress login. It converts each post's HTML into Lexical rich text and swaps inline images for real media records. Embeds become links that the front end renders as players.
- Recover what the API hides. ACF values and custom post types came from the database backup, restored in a throwaway local database and deleted after extraction.
- Import originals, not copies. WordPress keeps many resized versions of every image. I matched each attachment to its original via the database and imported only those.
- Make it re-runnable. Every record carries its old WordPress ID, so running the import again updates rather than duplicates.
- Rebuild the front end in Astro, keeping the design. I kept my da Vinci-inspired minimalist theme and reworked its GSAP animations to load less and run smoother. Same URLs where it mattered (tags stay at /topic/<tag>), posts move to /blog/<slug>, and the home page becomes a stack of blocks.
- Seed redirects, then switch DNS. Old URLs go into a Redirects collection in Payload, and Astro builds them in. Change a slug later and the redirect is added automatically.
What I'd do differently. I would have taken the opportunity to re-design but that process would've bogged me down with my current workload.
Still to come: comments from the 2007–2011 era, recovered via the Wayback Machine and queued for review.
Next up: jon-cuevas.com
My portfolio website, jon-cuevas.com, is next, just waiting for the next weekend. It already runs in staging on the same Payload CMS behind the scenes, with its own Astro front end, design and portfolio collection. The new version is up on a preview address now and goes live on the main domain soon. Same stack, same publish-and-rebuild flow, a different look.
Closing the door, gently
Twenty-two years is a long time to spend with anything. WordPress taught me how the web works, paid for a good part of my life, and introduced me to most of the people I still build with. I’m not burning it down on the way out. If WordPress is working for you, stay; there’s a reason it still runs most of the web.
But for me, the gears had stopped meshing. Every update felt like a negotiation, and every news cycle was one more thing to explain to clients. This new setup feels lighter. My content sits in my own database, my pages ship as plain HTML, and nobody else’s dispute can reach into my plugin folder.
If you’ve made a similar move, or you’re weighing one, I’d like to hear how it went. And if you’re one of my WordPress clients wondering whether this is right for your site, hit me up. Worst case, we have a good talk about your site. Best case, you get to feel what I’m feeling this week: so happy I can’t stop crying.
For my existing WordPress clients: a special rate to move over
If I built or maintain your WordPress site, I'd like to offer you the same move at a special rate. You'd get what I just did for my own site... and more!
This isn't the right move for every site. A heavy WooCommerce store, or one that leans on a dozen interactive plugins, may be better left where it is for now. A content site, a portfolio, a company or campaign site is usually a great fit.

Sources
Wikipedia, WordPress (first release 27 May 2003)
Wikipedia, Official Gazette (Philippines) (online edition launched 26 July 2010)
SunStar, Palace to launch OP website Monday (Aug 2010)
Cloudflare, Cloudflare Launches at TechCrunch Disrupt (Sep 2010)
Newsbytes.PH, Government agencies implored to use standard web template (Jun 2013)
Lawphil, Administrative Order No. 39, s. 2013 (Jul 2013)
WP Tavern, ACF plugin forked to Secure Custom Fields (Oct 2024)
University of Michigan Safe Computing, Update WordPress to version 7.1.2 to fix RCE vulnerability (Sep 2026)
WordPress.org, WordPress 7.1.3 Maintenance and Security Release (Oct 2026)
Payload docs, Database overview (backs “Postgres, SQLite, MongoDB”)
Wikipedia, I’m So Happy I Can’t Stop Crying (Sting, Mercury Falling, A&M, 1996), which credits the lyrics you quote
404 Media, Automattic CEO Matt Mullenweg put on leave of absence (Sep 2026)
The Next Web, Automattic says Mullenweg is CEO again (Sep 2026)
TechCrunch, Automattic has a new board after failed attempt to put CEO on leave (Sep 2026)
Poland Insight, Automattic layoffs hit WordPress.com teams (Oct 2026)
TechRadar, WP Engine–Automattic feud resurfaces (Feb 2026)
Search Engine Journal, Automattic disputes use of the word "Automatic" (Nov 2025)
WP Tavern, Court grants WP Engine preliminary injunction (Dec 2024)
ePrize, WordPress market share and governance crisis, citing W3Techs (Sep 2026)
Roboin, Cloudflare acquires the web framework Astro (Jan 2026)
CMSWire, What Figma's Payload deal really means (Jul 2025)
iGovPhil, 2012 Accomplishment Report (archived)
iGovPhil, 2013 Accomplishment Report (archived)
DOST-ICT Office, Memorandum Circular No. 2015-001: rules on migrating to the GWHS (Apr 2015, archived)
Lawphil, Administrative Order No. 39, s. 2013 (Jul 2013)
GMA News, Aquino orders tighter web security, migration of PHL govt websites (Jul 2013)
DOST-ICT Office, Philippine eGovernment Interoperability Framework (PeGIF) Initiative (presentation, Oct 2013)
World Bank, Open Government in the Philippines (Report No. AUS7421, 2015)
Newsbytes.PH, ICT Office issues policies on web hosting, email, info standards (Jun 2015)
Comments