pizza thin crust to thick crust

From WordCamp and 120 Pizzas to a Block Theme Launch

What a contrast a week can be.

Last weekend I was at WordCamp, surrounded by a group of WordPress and open source enthusiasts, all buzzing about the same stuff I get excited about. The sort of weekend where you come home full of ideas and convinced you’re going to change how you work. Then the dust settles, you sit down to actually turn those ideas into content, and you come back down to earth with a bump.

Mind, “back to earth” is doing some heavy lifting here, because this weekend wasn’t exactly quiet.

It started with a Thursday pop-up commitment for pizza, rolled into the usual Friday pizza shift, and then turned into a full day of serving pizza at a wedding. For the record, that’s 120 pizzas on the wedding day alone, not counting Thursday and Friday. The setting helped, mind. We were up Ham Hill, right on the cusp of the hill itself, looking out over Charlton Kings and Leckhampton. Probably the best view I’ve ever made a pizza in front of.

So that was the weekend. Pizza and parties, no apologies.

This week, though, I’m diving back into code, and this one I’ve been waiting on for a while.

A year in the making

We’re launching the conversion of Kate & Tom’s classic theme into a block theme. That includes the search, and over 400 houses converted across the site. It’s been the better part of a year, and it’s not the kind of job you rush.

The interesting bit, and the bit I think actually matters, is what we pulled out along the way. The old site leaned heavily on Advanced Custom Fields Flexible Content for laying out pages. We’ve replaced all of that with native core WordPress blocks.

Why that’s worth doing

Now, ACF is a genuinely good plugin and I’m not knocking it. But building a whole site’s layout system on top of a third-party plugin’s Flexible Content field means that plugin is now holding the keys. If it changes direction, gets bought, or development slows down, you’re stuck. Your content lives inside someone else’s structure.

This is the same thing I bang on about with bloated themes. When you buy a house you buy the shell, not the furniture. A site built entirely around one plugin’s way of doing things isn’t really yours, it’s borrowed.

Moving 400-plus pages onto core blocks means the layout now uses the same tools WordPress ships with out of the box. No third-party plugin sitting in the critical path. No lock-in. If we walked away tomorrow, the next developer opens it up and recognises everything, because it’s just WordPress.

The hard part is the migration

If you take one thing away from this, it’s that the migration is the hardest part of moving from a classic theme to a block theme. Not the templates, not the theme.json, not learning the editor. Those are the bits people worry about, and they’re the easy bits once you’ve done them a couple of times.

The real graft is the content. You’ve got 400-plus pages of data sitting inside ACF Flexible Content layouts, and it all has to come out and go back in as core blocks without breaking, without losing anything, and without a human having to rebuild every page by hand. That’s where the time goes. That’s where the surprises hide. Mapping every old field to the right block, handling the pages that didn’t follow the rules, checking the output against the original. It’s slow, careful, unglamorous work.

It was an interesting journey, and a fiddly one in places. Converting that much content is never as clean as you’d like. But it was completely worth it to get the site into a more future-proof state without being tied to plugins it doesn’t need.

Back to normal, weather permitting

So that’s the plan for the week. Head down, code in, site launched.

I’m hoping to be back to something like normal by next weekend, although the heatwave that’s coming in might have other ideas. We’ll see. I’ll let you know next week.


If you want to see more of what I get up to with WordPress and block themes, have a look around elliottrichmond.co.uk.


Leave a Reply

Your email address will not be published. Required fields are marked *