# Elliott Richmond

WordPress Theme and Plugin Developer

- Site: https://elliottrichmond.co.uk/

## WooCommerce Delivery Time Slots for Local Food Businesses

- Link: https://elliottrichmond.co.uk/woocommerce-delivery-time-slots-for-local-food-businesses/
- Published: 2026-10-20T17:01:42+00:00
- Author: elliottrichmond

PizzaPilot is officially on WordPress.org! The free plugin has been approved and
is live at [wordpress.org/plugins/pizzapilot](https://wordpress.org/plugins/pizzapilot/),
and its big brother, PizzaPilot Pro, is available now from [pizzapilotpro.com](https://pizzapilotpro.com/downloads/pizzapilotpro/).

I’ve released plenty of code over the years, but this one feels different. It isn’t
a side project I dreamt up on a quiet afternoon. It’s the ordering system that runs
our own little pizza business, built by me and tested every Thursday, Friday and
Saturday night by my wife Rachael Willoughby, our customers and anyone unlucky enough
to be standing near the oven when something went tits up.

## How a lockdown pizza habit became a plugin

So, rewind to 2020. The first lockdown hit, and Rachael and I started selling pizza
from our home kitchen. That became CasaGees, and we took our first orders in April
2020. I’d made pizza all my life (and spent my early career as a chef before WordPress
came along), so the cooking was the easy bit…

_It wasn’t always CasaGees, mind. We originally went to trademark the name Papa 
Gees, and Papa John’s had other ideas. So we renamed, trademarked CasaGees instead,
and got on with making pizza._

…the ordering was not. Anyone who has run a takeaway knows the problem. Everyone
wants 7pm, nobody wants 5.30pm, and the oven can only cook so many pizzas in half
an hour. Then there’s the customer whose address is “the farm past the second cattle
grid”, and the delivery that turns out to be well outside the area after you’ve 
already taken the money.

At the same time I was watching WordPress developers all over the community scramble
to turn brochure sites into ordering systems for clients who’d lost their front 
door overnight. Well, I was doing exactly the same thing for us. So I built it properly,
on our own WooCommerce site, one real problem at a time.

That’s the bit I’m proudest of. Every feature in PizzaPilot exists because Rachael
or I hit the problem on a busy night. Real world problems, real world solutions.
We’ve now taken over 11,000 orders through it, we’ve gone from doing our own deliveries
to employing local drivers, and a typical Friday sees around 90 pizzas go out of
a kitchen that is, let’s be honest, still a home kitchen.

Getting it onto WordPress.org wasn’t entirely plain sailing either. The plugin review
team questioned the name as a possible trademark clash, which was a bit of a moment.
We’d already lost one name to a pizza giant, and pizzapilotpro.com is the root of
the whole brand. A few polite emails later, PizzaPilot it stayed. Sweet huh!

## What you get for free

The free plugin turns a WooCommerce shop into a timed ordering system for local 
delivery and collection. Customers pick a 30-minute slot at checkout, between whatever
opening and closing times you set, so orders spread across the evening instead of
all landing at once.

It checks the distance from your shop to the customer’s postcode and refuses delivery
beyond your radius, before they pay. That uses a free UK postcode service, so there’s
no API key to faff about with. Anyone outside the area can still choose collection.

There’s also a Delivery Postcode Checker block you can drop on any page, which answers“
do you deliver to me?” before someone fills a basket. And the kitchen gets a simple
Kitchen Orders page with today’s orders grouped by slot and a tick to mark each 
one done.

It works with both the classic and block checkout, and it’s compatible with WooCommerce’s
newer order storage (HPOS, the faster custom tables WooCommerce now uses instead
of cramming orders into the posts table).

## What Pro adds (and why we needed it)

The free plugin is genuinely useful on its own, but Pro is what actually runs a 
CasaGees Friday night.

![The order slot managment](https://elliottrichmond.co.uk/wp-content/uploads/2026/
10/slot-manager.png)

**Ordering ahead.** Customers can order for today and the next six days, picking
a day and then a time. A Friday order placed on a Tuesday means we see the demand
coming instead of finding out at 6pm. You build your slots in a slot manager, and
it won’t let you delete a slot that already has an order in it (ask me how I know
that matters).

![](https://elliottrichmond.co.uk/wp-content/uploads/2026/10/delivery-slot-time-
1024x640.gif)

**Capacity that matches the kitchen.** Every slot has a set number of places, and
you decide what a place means: one per order, or one per item. We run it per pizza,
at 12 pizzas a half hour. A slot with two places left simply can’t be booked by 
an order for five, and full slots vanish from checkout. No more promising more than
the oven can deliver.

**Exact delivery location.** Customers can drop a pin on a map at checkout, and 
each pin gets a What3Words address (a unique three-word name for a 3 metre square).
If you’ve ever tried to find a farmhouse from a rural postcode that covers half 
a valley, you’ll know why this one made it in.

![](https://elliottrichmond.co.uk/wp-content/uploads/2026/10/exact-location-pindrop-
1024x640.gif)

**A live kitchen board.** Orders move across New, Preparing, Ready and Out for delivery,
by drag and drop or a tap. New orders chime until someone acknowledges them, every
card counts down to its slot time, and several tablets stay in step. Goodbye pile
of printed emails.

![Kitchen orders kanban](https://elliottrichmond.co.uk/wp-content/uploads/2026/10/
kitchen-orders-kanban-1024x640.gif)

**A Deliveries page for drivers.** Drivers log in to a phone-friendly page (they
never see the WordPress dashboard) with the address, a tap-to-call number, Google
Maps, Apple Maps and What3Words buttons, and exactly how much cash to collect. Tapping
Delivered records who delivered it and when. No more drivers ringing the shop for
addresses, which on a busy night is worth the price on its own.

![Deliveries page](https://elliottrichmond.co.uk/wp-content/uploads/2026/10/deliveries-
1-1024x640.gif)

Pro also works outside the UK with a Google Maps key, and every outside service 
is optional, so if a key is missing it carries on trading rather than falling over.
If a licence lapses, it keeps working for 14 days with a reminder, because nobody
should lose their Friday night over a missed renewal.

As a launch offer, the first 100 customers get their first year of [PizzaPilot Pro](https://pizzapilotpro.com/downloads/pizzapilotpro/)
for £89, after which it goes up to £129 a year. It needs the free plugin installed
alongside it.

## Not just for pizza

Now, the name gives it away, but there’s nothing in PizzaPilot that only works for
pizza. If you make or prepare things to order and hand them over at a set time, 
you’ve got the same headaches we had. Think takeaways of any kind, bakeries taking
pre-orders, meal prep, butchers and farm shops doing weekend rounds, Sunday roast
boxes, florists, and village shops offering click and collect.

The common thread is a small team, a limit on how much you can make or deliver every
half hour, and a local delivery area. And because it all runs on your own WooCommerce
site, the customers and the data are yours, with no delivery app taking a cut of
every order.

## Thank you

This has been a proper joint effort. Rachael is my wife and (let’s be clear about
the pecking order) also my boss. We’ve worked together for 20 years building websites
and online software for private clients, and she markets everything we do at Square
One Software.

So when CasaGees came along she was the obvious person to market it, and that work
has won multiple marketing awards, which is more than my code has ever managed. 
Marketing PizzaPilot is her next job, so you’ll be seeing a lot more of it.

She’d be the first to tell you she isn’t as confident with software as I am, but
that’s exactly what made her so valuable here. She has been the physical tester 
of the whole thing (the software and the pizza), and she’s the one who gathers feedback
from our online customers and brings it back to me. If something didn’t make sense
to her, it wasn’t going to make sense to a busy takeaway owner either. PizzaPilot
wouldn’t be what it is without her, and CasaGees wouldn’t exist at all.

Thanks too to our customers, who have been unknowing beta testers for over five 
years, to our drivers, and to the WordPress.org plugin review team for keeping the
directory honest.

If you run a food business, or build sites for people who do, go and grab [PizzaPilot from WordPress.org](https://wordpress.org/plugins/pizzapilot/)
and give it a spin. When you outgrow it, [PizzaPilot Pro](https://pizzapilotpro.com/downloads/pizzapilotpro/)
is waiting. And if you find a bug, be gentle. It’s been a long few years!

## AI and Creativity: More Productive, Less Creative

- Link: https://elliottrichmond.co.uk/ai-and-creativity-more-productive-less-creative/
- Published: 2026-10-02T13:06:56+00:00
- Author: elliottrichmond

So I’ve been wanting to write about this for a while, mainly because I’ve been using
AI far more recently than I was, say, twelve months ago. It’s definitely come a 
long way, and the accuracy is so much better now. There’s a lot less slop.

That’s particularly true when it comes to code. Well, let’s face it, I don’t really
code any more. I’m literally an overseer.

To keep my agents from going wild, I’ve set up a strict workflow. For every task
I create, the agent has to create a branch, do the development work and submit a
[pull request](https://docs.github.com/en/pull-requests/reference/pull-requests).
Then I go in and inspect it. My role has fundamentally changed, but I suspect that’s
the case across the board for anyone who’s properly embraced AI.

Looking back a year or eighteen months, I was diving into all of this with heaps
of enthusiasm. My workflow has completely transformed since then, and I use AI for
significantly more tasks. The snag is that it’s stripped away my creativity, and
I really miss that side of things.

The trade-off, of course, is that I’m far more productive now. That’s a massive 
practical shift, but mentally I’m finding it quite conflicting. I feel myself becoming
less creative. Yes, AI is a tool that can ramp up output, but my creativity is in
the nitpicking tweaks, the “what if I try this?” process and that genuine sense 
of discovery. What AI gives me is “productive creativity”, if you can even call 
it that.

I’m not convinced that’s a healthy place to be long-term. I feel like pulling back
on my reliance on AI when it comes to creative work. The direct impact will be a
drop in raw productivity, but for the sake of my mental stimulus, I think it’s a
price worth paying.

Where AI has genuinely benefited me is on the production side. Two or three years
ago, I started my YouTube channel with a heavy focus on user- and developer-centric
content. As I’ve scaled up and tried to improve the production value, the [editing process](https://elliottrichmond.co.uk/behind-the-scenes-of-my-latest-youtube-video-ai-wordpress-and-late-night-editing/)
was becoming a massive manual slog.

I’ve leveraged AI to speed all of that up. For instance, I use a custom script that
takes my edits, strips out all the “ums”, “ahs” and dead spaces, grabs my last good
line, and essentially edits the sequence for me. I’ve also built automation for 
syncing audio to paper edits and dropping in motion graphics. To be honest, I used
to really enjoy doing motion graphics, but they take a serious amount of time. AI
has simply stepped in to keep the assembly line moving.

It’s the same story with WordPress development. I have dedicated agents configured
specifically for [plugin development](https://developer.wordpress.org/plugins/).
As I mentioned, for any task I set, the agent branches the code and opens a PR for
me to test. I’m just orchestrating and overseeing the codebase rather than writing
it line by line. I reckon I speak for the majority of [developers who have embraced AI](https://elliottrichmond.co.uk/ai-wont-replace-developers-who-can-think-critically/)
here.

So, in terms of productivity? Brilliant. But the knock-on effect on personal creativity
is real.

There is an old adage that sometimes you’ve just got to get the job done, and that’s
precisely where AI slots in. But I have plenty of creative outlets outside of tech:
cooking, painting, drawing, playing music, design work and writing. It’s embarrassingly
easy to get AI to spit out a block of text, but that doesn’t compare to dumping 
your actual thoughts onto paper and wrestling with the edit. That is what gets the
heart pumping and tickles the brain. Prompting a box to generate mediocre content
isn’t great for SEO, and it certainly isn’t doing your creative sanity any favours.

I’ll probably revisit this in another twelve months to see where things stand. Knowing
me, I’ll probably get lazy and lean into AI even more. But I’m hoping I can hold
onto a bit of genuine creativity along the way.

Are you in the same boat, or is it just me? I’d love to hear your thoughts in the
comments.

## WordPress 7.1: What’s Actually Worth Your Attention

- Link: https://elliottrichmond.co.uk/wordpress-7-1-whats-actually-worth-your-attention/
- Published: 2026-08-12T10:36:29+00:00
- Author: 

WordPress 7.1 lands on 19 August 2026, and for once I don’t think that’s an exaggeration
when I say it’s a proper release. Not a “few tweaks and a new default theme” release,
mind, a genuine “people have been asking for this for years” release. I sat down
and went through it properly for my latest YouTube video, cherry picking 14 features
to actually test rather than just read about, and a few of them are worth talking
about here on their own.

## Responsive styles has finally landed

This is the big one everyone’s been shouting about, and fair enough. For years the
answer to “can I make this font smaller on mobile without writing custom CSS” has
been a shrug and a trip to the theme.json file, or worse, a plugin. As of 7.1 you
can now set styles for tablet and mobile viewports, both through Global Styles and
on individual blocks, directly in the editor.

The defaults are sensible too. Mobile kicks in at 480px and below, tablet covers
480px to 782px, and theme authors can override both if their design needs different
breakpoints. It covers typography, colour, spacing, borders and layout, which is
a genuinely wide net.

Now here’s my honest bit, because I said I’d fact check myself and I meant it. If
you’re building on a properly set up block theme with intrinsic, fluid design already
baked in (clamp() for type scales, flexible grids, that sort of thing), you’re probably
not going to reach for this feature very often. The whole point of intrinsic design
is that it adapts without you having to define three separate states. So if that’s
how you already work, don’t expect this to scratch much of an itch day to day.

But that’s not a knock on the feature. Plenty of builders don’t work that way, plenty
of client sites need a genuine one off override on a specific block for a specific
screen size, and for the people who’ve been asking for this since forever, it’s 
finally here. I’ve written before about [dealing with mobile breakpoints the hard way in the block editor](https://elliottrichmond.co.uk/mobile-fix-for-complex-layouts-in-the-wordpress-block-editor/),
so believe me when I say I’m not sniffy about this landing, I’m just not going to
pretend it’s the feature I’ll open every single day.

## Hover, focus and active states without touching a stylesheet

This is the one I’m actually most excited about, and I don’t say that lightly. WordPress
7.1 adds a “States” dropdown to block style controls, letting you define different
styles for `:hover`, `:focus` and `:active` right there in the editor. No plugin,
no custom CSS, no telling a client “yeah that’ll need a developer.”

Why does this matter more than it sounds? Focus states are one of the most overlooked
bits of accessibility on the web. A site that looks lovely but gives a keyboard 
user no visible clue where they are on the page is a site that’s failing a chunk
of its visitors, full stop. Baking hover, focus and active states into core, front
and centre in the interface rather than buried in a “read the docs” corner, is a
proper nudge in the right direction for site builders who’d never think to add them
otherwise.

Worth knowing though, at beta stage the full per block state controls are really
only fleshed out on the Button block and the Navigation Link block, with everything
else getting the states through Global Styles rather than individual block level
control. That might widen by the time 7.1 is stable, but if you go looking for it
on every block and it’s not quite there yet, that’s why.

## The new Tabs block

Tabs has been one of the most requested blocks for years, and it’s finally shipping
in core alongside a Playlist block. It does what it says on the tin, lets you organise
content into clickable panels instead of dumping everything on the page at once,
which is exactly the kind of thing FAQs, product specs and comparison tables have
wanted forever.

It’s built following the standard accessible tab pattern, so keyboard navigation
and the right ARIA roles are there rather than bolted on as an afterthought, which
matters because plenty of the third party tabs plugins over the years have got that
bit wrong. I’ll be honest, out of everything in 7.1 this is the block I reckon I’ll
use the most. Realistically it’ll end up in most of the sites I build going forward,
simply because it’s one of those genuinely useful, unfussy blocks rather than a 
novelty.

## Worth the update

Between responsive styles, proper interactive states and a native Tabs block, 7.1
earns its place as one of the more significant releases in a while, even if not 
every feature lands the same way for every kind of builder. I went through 14 of
the new features properly for my [YouTube channel](https://youtu.be/xoffY_YYhlo?si=3g9eUy8GXKtIQPRB),
testing them rather than just describing them, so if you want to see how they actually
behave before you update a live site, that’s where to look.

For the full technical breakdown straight from the source, the [WordPress 7.1 Source of Truth](https://gutenbergtimes.com/wordpress-7-1-source-of-truth/)
is worth a read too.

## How I Use WordPress Playground Blueprints to Train Clients (Without Touching the Live Site)

- Link: https://elliottrichmond.co.uk/how-i-use-wordpress-playground-blueprints-to-train-clients-without-touching-the-live-site/
- Published: 2026-07-23T09:19:53+00:00
- Author: 

When you launch a new website, training the client is the bit that gets neglected.
The block editor is mature enough now that clients can do far more than they used
to, but anything new needs teaching. So training isn’t an optional extra, it’s part
of the job.

The obvious place to do it is the staging site. You’ve already got one, it’s running
the theme, the plugins, the content. Makes sense, right?

Well, not really. A staging site doesn’t feel like a sandbox, it feels like a real
site. So your client either edits actual content or they’re too nervous to touch
anything at all. And it’s another WordPress install you have to host, patch, and
secure, quietly rotting into an out of date copy of the real thing if you leave 
it sitting there.

There’s a better way, and in my latest video I walk through it: [WordPress Playground](https://wordpress.org/playground/)
combined with Blueprints. Playground runs WordPress entirely in the browser (no 
server, no hosting, no database to manage), and a Blueprint is a single JSON file
that tells it how to set itself up. Your theme pulled straight from GitHub, your
custom plugins, some representative dummy content, all booting from one shareable
link.

Your client clicks the link and gets their own private, fully configured copy of
their site to break, un-break, and reload as many times as they like. No logins,
no upkeep, no consequences. And six months after launch, when they’ve forgotten 
how to do something, that same link still works.

**Watch the video here: **[WordPress Playground & Blueprints – The Client Training Tool You’re Probably Not Using](https://youtu.be/eDDeP_a3MWw?si=mJRM5L6530fou4p6)

In the video I cover:

 * Why staging sites make a poor training environment
 * What Playground and Blueprints actually are, and how WordPress runs in a browser
   at all
 * What a minimal Blueprint JSON file looks like (and why it’s less scary than it
   sounds)
 * How to build one without writing any JSON, using the [Playground Step Library](https://akirk.github.io/playground-step-library/)
   or [Pootle Playground](https://pootleplayground.com/)
 * How to generate the shareable link
 * How I used this on a real [block theme conversion](https://elliottrichmond.co.uk)
   project
 * The honest limitations: persistence, email, and boot times

If you’re delivering block theme sites to clients and you’re still training them
on staging, give this one a watch. It took me ten minutes to set up and it’s changed
how I hand over every project since.

## Why I Spent 16 Months Turning 400+ Holiday Cottages Into WordPress Blocks

- Link: https://elliottrichmond.co.uk/why-i-spent-16-months-turning-400-holiday-cottages-into-wordpress-blocks/
- Published: 2026-07-07T08:41:19+00:00
- Author: 

**TL;DR:** I rebuilt [kate & tom’s](https://kateandtoms.com), a 400+ property holiday
cottage site, from Advanced Custom Fields flexible content into a native WordPress
block theme. The client can now build pages from patterns instead of waiting on 
me to code a new widget every time. The hard part was migrating 10,590 widgets out
of post meta and into blocks, which I did with a purpose-built plugin re-run against
fresh production snapshots throughout development. I trained the team using WordPress
Playground so they could break things safely, and even before any tuning the new
block theme already outscores the old classic theme on PageSpeed. It took sixteen
months because the site is genuinely that complex, and it was a one-man job. Checkout
the WordPress blocks migration here.

Last week I launched a site for [kate & tom’s](https://kateandtoms.com), a luxury
cottage holiday company with houses dotted right across the UK. Over 400 of them,
in fact, each one pulling its own live availability from a third-party booking API.
That’s not a small site by anyone’s measure, and it’s taken sixteen months to get
here. I want to explain why.

![Old WordPress vs New WordPress](https://elliottrichmond.co.uk/wp-content/uploads/
2026/07/old-vs-new-migrating-old-form-based-acf-to-modern-wordpress-native-blocks-
1024x782.png)

That’s the shift in one picture. On the left, the old backend: a stack of form-based
ACF widgets the client filled in field by field. On the right, the same house rendered
from native blocks in a modern block theme. Getting from one side of that arrow 
to the other, 400-odd times over, is what this post is about.

## The old site worked, it just didn’t work for them

The previous build was Advanced Custom Fields flexible content, and to be fair to
it, flexible content did its job for years. The client could drop widgets onto a
page and build something reasonably varied without touching code.

The catch was what happened when they wanted a new type of widget. That meant coming
to me. I’d have to build the logic behind it, test it across desktop and mobile,
then deploy it before they could actually use the thing. For a marketing team that
wanted to move quickly, that’s a real blocker, and it was the main reason for moving
to a block theme.

## What the site actually is

Each of the 400+ houses has its own landing page, with child pages underneath it
for availability, key facts, book now, and a gallery. That parent-child structure
alone gives you a sense of the scale, but the taxonomy behind it is where it gets
properly hairy. Locations run to 62 terms. Activities sit at 109. Sizes cover 16
options, types 7, occasions 30. Features alone come in at 73 terms, which is the
kind of number that makes you double check you’ve read it right.

On top of that there’s an enquiry form wired up per house, so the marketing team
can actually see where enquiries are coming from across the whole portfolio rather
than one big anonymous inbox. And then there’s the booking calendar itself, where
a visitor picks a couple of dates and gets shown available periods around them, 
all pulled live from the third-party API. None of that is decorative. It’s the stuff
that actually earns the client money.

## Blocks over widgets

The move to a modern block theme was about handing that flexibility back to the 
client. Instead of asking me for a new widget every time marketing wants to try 
something, they can now build pages themselves from a library of patterns, no development
time required. That’s the whole point of the block editor when it’s set up properly.
It’s not just a nicer interface, it removes a dependency that was slowing them down.

## The migration itself was the hard part

Here’s the bit that ate most of the sixteen months. All that old flexible content
lived in post meta, and none of it transfers to blocks on its own. And there was
a lot of it. When I actually counted, there were 10,590 widgets across all the houses,
an average of 25.9 per house, with 401 houses carrying 21 or more each. Every one
of those had to end up as a block.

![Some existing widget placement stats from an old WordPress site that needed migrating
to a new Block theme WordPress site](https://elliottrichmond.co.uk/wp-content/uploads/
2026/07/some-existing-widget-placement-stats.png)

Numbers like that are exactly why manual conversion was never on the table. You 
don’t hand-edit ten and a half thousand widgets. So the job split into two stages.

First, I had to build a library of block patterns that matched every existing ACF
widget, one for one. Only once those existed could I even start on the second stage,
which was writing a migration script to convert the actual content, pulling everything
out of post meta and rebuilding it as post content in blocks.

I won’t pretend it was clean. Some of that conversion came out flaky, and a chunk
of pages needed manual fixing afterwards because of how the block editor parses 
and serialises content. Get the `innerHTML` and `innerContent` even slightly out
of step and the editor throws up its “Attempt Block Recovery” prompt, which is the
sort of thing that eats an afternoon. That’s the honest version of events, not the
tidy one. Given the size of the site, I think sixteen months is a fair reflection
of the actual work rather than scope creep, but it’s still a long time to be inside
one project.

I wrote up the technical side of all this in far more depth about a year ago, back
when I was first getting my head around it, including the pattern-based approach
and the `Pattern_Handler` class that does the heavy lifting. If you want the code-
level version of this story, [that case study is here](https://elliottrichmond.co.uk/migrating-legacy-wordpress-content-to-the-block-editor-a-real-world-case-study/).

Worth a note if you read that earlier piece: back then I put the scale at roughly
200 house listings and 500 widgets. That was an early estimate before I’d properly
audited the data, and it turned out to be a fair way short. The real figures were
400-plus houses and over ten thousand widgets. That gap is a lesson in itself, really.
Until you actually count, you’re guessing, and migration guesses tend to run low.

## The migration ran as a plugin, in a fixed order

All of that logic lives in a dedicated plugin I built just for this job, rather 
than a throwaway script. The reason it’s a proper plugin is that I ran it over and
over throughout development, not once at the end.

Here’s the wrinkle a lot of migration write-ups skip. Development ran for months,
but the real site was live the whole time, and its data kept moving. Special offer
dates rolled into the past, availability changed, content got tweaked. If I’d worked
from a single old export, the migrated site would have drifted further from reality
every week.

So the workflow was to take periodic snapshots of the live production database, 
pull each one down locally, and then re-run the whole migration against fresh data.
A shell script handled the sequence, refreshing the local database and then firing
each migration function in order through WP-CLI `eval` calls. Roughly, it goes like
this:

 1.  Build the page header banner and title widgets
 2.  Convert the house photo galleries
 3.  Set the thumbnail featured images
 4.  Clean up the existing house sub-pages
 5.  Run the main widgets-to-patterns conversion across all houses
 6.  Rebuild the house sub-pages (availability, book details, calendar)
 7.  Wire the availability calendar up to the booking API
 8.  Append the galleries and key facts to their pages
 9.  Add the seasonal and availability header banners
 10. Stamp the signature styling across the sub-pages

Order matters here. You can’t append galleries to sub-pages that haven’t been rebuilt
yet, and you can’t wire up a calendar before the book details page exists. Each 
step assumes the one before it has already run, which is exactly why it lives in
a script rather than being fired by hand. Refresh the database, run the script, 
and a few minutes later you’ve got an up-to-date migrated site to test against. 
That repeatability is the thing that made a sixteen-month migration survivable.

## Training the client without the fear of breaking anything

Once the new site was ready, there was still a training problem. Five or six people
at kate & tom’s needed to get comfortable with the block editor, having only ever
known the old widget system. For that I used [WordPress Playground](https://playground.wordpress.net/)
and a Blueprint that loaded their actual theme, plugin, and a slice of their real
content into a disposable, in-browser WordPress instance. If they broke something,
a refresh put it straight back. I’ve written about how that setup works in more 
detail in [wordpress-playground-blueprints-client-training](https://elliottrichmond.co.uk/why-i-spent-16-months-turning-400-holiday-cottages-into-wordpress-blocks/wordpress-playground-blueprints-client-training),
so I won’t repeat it here, but it turned out to be one of the best training tools
I’ve used with a client.

## An early word on performance

Here’s something I didn’t go looking for but was pleased to see. I ran the new site
through Google PageSpeed Insights and compared it to a snapshot of the old classic
theme from October 2022.

![Page speed insights from a WordPress Classic theme ](https://elliottrichmond.co.
uk/wp-content/uploads/2026/07/page-speed-insights-before-882x1024.png)

![Page speed insights for a new WordPress Block theme ](https://elliottrichmond.
co.uk/wp-content/uploads/2026/07/page-speed-insights-after-850x1024.png)

The old theme scored 22. The new block theme scores 67 straight out of the gate.
Total Blocking Time went from a painful 2,410ms down to 200ms, First Contentful 
Paint dropped from 3.2s to 2.0s, and Cumulative Layout Shift went from 0.1 to basically
nothing at 0.009. For a straight conversion with zero performance work done on the
new site yet, that’s a genuinely good starting point.

Now, I want to be honest about what this is and isn’t. It’s not an acid test. The
two snapshots were captured four years apart, on different emulated devices, using
different versions of Lighthouse, so it’s a rough comparison rather than a controlled
one. And that 128.6s Largest Contentful Paint figure on the new report is obviously
nonsense, almost certainly a measurement artefact from a lazy-loaded hero image 
or the cookie banner tripping up the test, not a real load time. I’ll be digging
into that.

So take it for what it is. A modern block theme, before any tuning, comfortably 
outperforming the old classic theme it replaced. That’s the pattern I’d expect, 
and there’s plenty more to claw back once I actually sit down and optimise it.

## Was it worth sixteen months?

The client is genuinely pleased with it, and so am I, mind. I got a bottle of bubbly
out of the launch, which never happens, so that tells you something. Here’s how 
one of the team put it:

> It’s been a long awaited and exciting upgrade and, despite being a little nervous
> about using the new backend, I have found it extremely straightforward to get 
> used to already. It offers so many more features and capabilities than the old
> site and it’ll enable us to streamline a lot of our day-to-day tasks and progress
> with long-awaited upgrades to how the website looks and functions. Thank you!

That “nervous about the new backend” bit is exactly why the Playground training 
mattered. The whole job is only a win if the people using it every day feel confident,
not just the developer who built it. I shared that before-and-after shot [on X](https://x.com/elliottrichmond/status/2072685735656706441)
when it launched, and there’s a proper video coming on my YouTube channel walking
through the ACF-to-blocks migration approach in more depth, because I think it’s
a route more agencies are going to need soon whether they like it or not.

If you’re still running a client site on [Advanced Custom Fields](https://www.advancedcustomfields.com/)
flexible content and every new layout idea means booking in development time, it’s
worth asking whether the block editor could take that job off your plate. I’ve written
more about the block theme side of things over on [my site](https://elliottrichmond.co.uk).

## Using WordPress Playground and Blueprints to Train Clients on Block Themes

- Link: https://elliottrichmond.co.uk/using-wordpress-playground-and-blueprints-to-train-clients-on-block-themes/
- Published: 2026-06-22T16:29:24+00:00
- Author: 

Now I’m pretty late to the table with this but I came back from WordCamp Europe 
this year with one thing I actually needed to go and try. Not for the sake of it.
Because there was a job waiting on the other side.

A client of mine is mid-migration from a classic theme to a full block theme. For
years they’ve managed their content with a plugin that used flexible content fields,
so this is a proper shift in how their site works day to day. Training was already
on the calendar. I just needed a safe environment to do it in.

That’s what pointed me towards WordPress Playground and Blueprints.

## What Playground actually is

[WordPress Playground](https://playground.wordpress.net/) runs a complete WordPress
instance in the browser, powered by WebAssembly. No hosting, no server to provision,
no login credentials to distribute and manage. You open the link and there is a 
working WordPress site in your tab.

A Blueprint is the JSON configuration file that tells Playground what to set up 
when it loads. Install this theme, this plugin, import this content. Set xyz WordPress
options. It steps through the list and hands the user a fully working site.

Together they are more useful than they might sound on paper.

## The problem I had to solve first

The original site database is well over a gigabyte. Custom post types for property
listings, all the associated media, landing pages, standard posts. That is not something
you just fire into a browser-based environment.

So I stripped it back. The old plugin-driven metadata was no longer relevant since
we rebuilt all of that for the block theme, so I could drop it entirely. I trimmed
metadata the XML content export down from over a gigabyte to around 50MB, keeping
just enough to make the training session meaningful.

That 50MB file, hosted on GitHub, became one of three things my Blueprint pulls 
in.

![](https://elliottrichmond.co.uk/wp-content/uploads/2026/06/blueprint.png)

## How the Blueprint is structured

The JSON file steps through a sequence. It sets the site name. It installs the custom
block theme directly from GitHub. It installs the bespoke plugin, also from GitHub.
It imports the slimmed-down XML content export. Then it sets the front page, configures
which page handles the blog posts index, and runs a rewrite flush so all the routing
is working correctly.

One file. One link.

## Why this is the right approach for training

The old way to do this would have meant spinning up a separate hosting account, 
migrating data into it, configuring it properly, and then managing credentials for
whoever needed access. That is a lot of overhead for what is essentially “give the
client somewhere safe to practise.”

With a Blueprint, I send the client a Playground link. They click it, the site loads
in the browser, and they have the real theme, the real plugin, and a realistic set
of content to work with. They can edit pages, experiment with patterns and blocks,
change things, break things. None of it persists. That is the entire point.

When they cannot remember how to do something next month, they just open the link
again.

## There is more to this than training sessions

Once you see how it works, other uses become obvious. If you are proposing a redesign
to a prospective client, you could build out the concept in a Blueprint and let 
them explore an actual working version of what their new site could look like. Not
mockups. Not screenshots. A site they can click around in themselves, edit, and 
get a feel for.

The pitch runs itself at that point, mind.

I have barely touched what Playground can do. There is a built-in file browser, 
the ability to switch WordPress and PHP versions, plugin testing environments, and
tighter GitHub integration than I have had a chance to use yet. If you are curious,
the [Playground documentation](https://wordpress.github.io/wordpress-playground/)
is worth a proper look.

## Worth exploring if you have not already

WordCamp Europe is good for planting seeds. This one landed at exactly the right
moment because there was a real job waiting that made Playground a necessity rather
than a curiosity. I am glad for it.

If you are working on block theme development and you have clients who need to get
comfortable with a new way of managing their site, Playground and Blueprints is 
a proper solution. The setup takes a bit of work the first time. Once the Blueprint
is built, it handles itself.

If you want more context on the block theme side of things, I have written about
[building and working with block themes](https://elliottrichmond.co.uk) over on 
my site.

## Where Have All the WordPress Speakers Gone?

- Link: https://elliottrichmond.co.uk/where-have-all-the-wordpress-speakers-gone/
- Published: 2026-06-18T06:36:46+00:00
- Author: 

The [Cheltenham WordPress meetup](https://www.meetup.com/cheltenham-wordpress-meetup/)
is taking a summer break. Holidays, busy schedules, the general impossibility of
finding a free Wednesday in July when half your members are somewhere on the Continent.
It’s nothing unusual. Other meetups do it too. We’ll be back.

But the break has given me some time to sit with something that’s been nagging at
me for a while: finding speakers has become genuinely hard. Not slightly tricky.
Actually hard. And I think it’s worth talking about why.

## Numbers Are Down. That Part’s No Secret.

Post-pandemic, attendance at WordPress meetups across the board has dropped. Ours
is no exception. People got used to staying home. Online alternatives multiplied.
The habit of turning up to a room full of strangers on a weeknight quietly faded
for a lot of people.

I’ll be honest, it had started to feel a bit discouraging. Then I went to WordCamp
Europe 2026. The turnout was genuinely encouraging. The enthusiasm was there. People
are still showing up for this community in numbers when the occasion is right. That
was a useful reminder that the appetite hasn’t gone away, it’s just become harder
to activate at the local level.

## The Speaker Spiral

The thing about meetup numbers is that they’re tied directly to the quality and 
variety of what’s on stage. Run two good sessions, one aimed at marketers and site
builders, one aimed at developers, and you’ll draw a broader crowd. People come 
because the content is relevant to them.

The problem is that the pool of speakers willing to stand up and talk has shrunk
since the pandemic. I don’t know exactly why. It’s possibly habit, possibly confidence,
possibly the fact that people have filled that gap with online content and feel 
less need to present in person. Resources like [WP Speakers](https://wpspeakers.com)
exist, and if you’re a UK-based speaker who isn’t already listed there, it’s worth
five minutes of your time to add yourself. The UK list is fine as far as it goes,
but the shortlist is shorter than it used to be.

So you end up in a bit of a spiral. Fewer speakers means less variety. Less variety
means fewer people have a reason to come. Fewer attendees makes it harder to attract
speakers who want an audience. Round and round.

The obvious workaround is to draw on your own members, and I’ve done that. It works,
up to a point. But it’s not everyone’s cup of tea, particularly in a smaller group.
And my own interests, block themes, Full Site Editing, development workflow, don’t
always map neatly onto what a room full of marketers, freelancers, and small business
owners needs to hear. The WordPress community spans a wide spectrum. Talks need 
to reflect that.

## Where I Think the Opportunity Is

During the break I’m going to spend some time thinking about how to approach this
differently. Not just chasing down the same small pool of willing speakers, but 
thinking about the format itself.

Workshops might be more useful than talks for certain topics. Something like “how
to start a business online” would land very differently with a younger audience 
than another session on Gutenberg. And that’s not a slight on Gutenberg, it’s just
an acknowledgement that the world is changing. Jobs are harder to find. More younger
people are looking at self-employment. They want an online presence. WordPress still
powers a significant chunk of the web, whatever you think of the recent noise around
it, and a meetup that can show someone how to actually use it to build something
real might be more valuable than a talk they could watch on YouTube.

I think there’s a version of this that brings younger, entrepreneurial people into
the fold. Not by watering down what the meetup is, but by being honest about what
it can offer someone who’s just starting out. That conversation is worth having.

If you’re curious about why community events like this matter at all, I’ve written
about that before: [Community Meetups Matter](https://elliottrichmond.co.uk/where-have-all-the-wordpress-speakers-gone/Community Meetups Matter).

## One More Thing

If you’re based in the UK, you’re a WordPress speaker (or you’ve been thinking about
giving it a go), and you happen to be passing through Cheltenham, I’d genuinely 
love to hear from you. Get in touch via [elliottrichmond.co.uk](https://elliottrichmond.co.uk).
And if you’re not already on [WP Speakers](https://wpspeakers.com), get yourself
listed. Meetup organisers across the UK are searching that list right now, and a
short entry costs you nothing. The more voices we have in the room, the better the
room gets.

We’ll be back in the autumn. In the meantime, I’ve got some thinking to do.

## From WordCamp and 120 Pizzas to a Block Theme Launch

- Link: https://elliottrichmond.co.uk/from-wordcamp-and-120-pizzas-to-a-block-theme-launch/
- Published: 2026-06-17T13:21:48+00:00
- Author: 

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](https://developer.wordpress.org/themes/block-themes/).
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](https://www.advancedcustomfields.com/)
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](https://elliottrichmond.co.uk).

## WordCamp Europe 2026 Kraków Recap

- Link: https://elliottrichmond.co.uk/wordcamp-europe-2026-krakow-recap/
- Published: 2026-06-10T10:49:20+00:00
- Author: 

This year WordCamp Europe was truly quite special. I’ve attended quite a few WordCamp’s–
and particularly a couple in Europe – and although I’ve been in the WordPress community
for over 20 years and run our own little [WordPress meetup](https://www.meetup.com/cheltenham-wordpress-meetup/)
in my local town, I have always been that introverted, shy, and retiring attendee.
My enthusiasm for [WordPress](https://wordpress.com) has never wavered from the 
day I discovered it, but coming together with a community as massive as this can
be daunting.

However, up until about three years ago, things began to change. After meeting [Jamie Marsland](https://pootlepress.co.uk)
for a couple of chats and some coffees, he encouraged me to drive forward with [my YouTube channel](https://www.youtube.com/@elliottrichmondwp).
Since then, and with a couple of shares from prominent developers in the community–
particularly [Rich Tabor](https://richtabor.com), whom I met at WordCamp Europe 
2026 in Kraków – my reach grew. I wanted to thank Rich and just let him know that
he took my subscriber list from 10 up to 1,000 literally with a single tweet, so
thanks again for that, Rich!

With that, my profile has risen a little and attracted some other prominent members
of the community, particularly [Michelle Frechette](https://michellefrechette.com/),
who has introduced me to several people. To cut a long story short, my profile has
been raised somewhat, which is what made WordCamp Europe in Kraków 2026 a particularly
special one for me. This time, there were a whole bunch of people that over the 
last 20 years I wouldn’t dream of walking up to and saying hello to, but this time
it was a completely different story. I’m grateful to everybody in the community 
who has created this opportunity for me. Although it has been exhausting and overwhelming
dealing with that many people in small spaces in a condensed amount of time, I can
tell you it was absolutely worth it.

## Day 1: Contributor Day

So, Day 1 was Contributor Day, and it was my first one. I have to say, when you 
rock up at a table and sit there not knowing what to say, or not knowing the people
you’re sat with, it is pretty overwhelming. But with a friendly hand on my shoulder
and a loud, booming voice saying, “Elliott!” in a rich, crisp, rhythmic South African
accent, I turned around to the warmest and most welcoming hello from [Jonathan Bossinger](https://jonathanbossenger.com/).
He immediately sat down beside me and started chatting. Let me tell you, he’s one
of those guys – a really experienced educator – who can just talk and make you feel
comfortable immediately. It was the first time we’d met face-to-face, although we’d
conversed online and I had contributed to the WordPress Training Team in the past.
It was an absolute pleasure to meet in person.

Then came another familiar face with a soft, rolling, melodic Spanish accent: [JuanMa Garrido](https://juanma.codes/),
who is also a super friendly and well-rounded educator at the forefront of WordPress
development. He introduced me to more people, and I met some of the Core team working
on Playground development. Later that day, I found myself at a table having a chat
with [Ryan Welcher](https://ryanwelcher.com/), who has that cozy, warm, easygoing
Canadian accent and is an all-around super nice guy. We talked about [Studio](https://developer.wordpress.com/studio/)
and setting up some parameters.

I should probably also mention meeting [Nathan Wrigley](https://nathanwrigley.com/)
for the first time at some point during Day 1, and then hanging out for a while 
in the afternoon. I first met Nathan online this year after I announced I’d be working
with [Automattic](https://automattic.com/) to promote WordPress products. Nathan
runs the _[WP Builds](https://wpbuilds.com/)_ YouTube podcast, which is my go-to
source for WordPress news, and he also interviewed me for _[WP Tavern](https://wptavern.com/podcast/211-elliott-richmond-on-wordpress-content-creation-education-and-pizza-plugins)_!

All in all, the whole process of attending Contributor Day has literally given me
so many ideas for content creation that it’s probably going to take me about two
weeks just to organise my mind and let the dust settle. It was super, super cool,
and I’m grateful to the whole community for welcoming me into what was my very first
Contributor Day – and it for sure will not be my last.

## Day 2: Talks, Swag, and Travel Logistics

>  [@elliottrichmondwp](https://www.tiktok.com/@elliottrichmondwp?refer=embed)
> WordCamp Europe Kraków – Day One [#wceu](https://www.tiktok.com/tag/wceu?refer=embed)
> [#wceu2026](https://www.tiktok.com/tag/wceu2026?refer=embed) @WordPress.com
>  [♬ Luxury, Elegance, Refined – Ted D’souza & Dani Audiomix](https://www.tiktok.com/music/Luxury-Elegance-Refined-7579631264467240961?refer=embed)

Day 2 was a case of walking into the venue and seeing not just cool developers, 
but also other attendees who I knew of. I attended some keynotes on Track 1 and 
Track 2 across four floors (if I remember correctly!) and also just dropped by some
of the sponsor booths to say hi and have some interesting conversations. And, of
course, I collected as much swag as possible, trying not to worry about how I was
actually going to take it back home with Ryanair! I only had a limited-size bag 
that I could travel with, as advised by my thrifty wife so as not to get ripped 
off by those up-sells and cross-sells where Ryanair drills a deep hole in your pocket.

It was also really nice to catch up with some old friends from across Europe whom
I’ve met at previous WordCamp’s, as well as some new friends from Automattic whom
I’ve been working with for the last six months – namely [Alexa](https://alexapeduzzi.com/),
[Ronnie](https://ronnieburt.com/), and Erin. Even though it was only Day 2, I was
just so exhausted. I had to forego any soirées or party invites and just go home
to get an early night. The first two days were intense, and I wanted to be as fresh
as possible for the final day.

## Day 3: Conversations, Keynotes, and Pizza

>  [@elliottrichmondwp](https://www.tiktok.com/@elliottrichmondwp?refer=embed)
> Thank you WordCamp Europe Kraków 2026 – day two and the after party [#wceu](https://www.tiktok.com/tag/wceu?refer=embed)
> wceu26@WordPress.com
>  [♬ original sound – Muneeb](https://www.tiktok.com/music/original-sound-7380046303487707937?refer=embed)

The last day was pretty much the same, except there was a lot more crammed in. I
tried to catch as many keynotes as possible, but I also hooked up with some more
Automattic folks, Britt and Nick, who were again super welcoming and nice. We discussed
the warm USA weather, the Cotswolds and thatched cottages (where I’m from), and 
cold Poland – even though it was pretty sunny on this day! I guess when you are 
accustomed to a particular climate, it gets into your bones. 🙂 We also discussed
aging cats and cute little dogs. It was so heartwarming to not just talk about WordPress–
although I do love talking WordPress any time of the day!

I also got a chance to sit down at a table and just chill after doing a workshop
with Jonathan Bossinger about setting up my first WordPress AI interaction using
the Abilities API, which was super cool. After so many interesting conversations
and interactions, I’ve come away with some fascinating ideas thanks to the chats
I’ve had with several people about AI.

Then, of course, there was what we’re all there for on the last day: the Keynote.
Sadly, [Matt Mullenweg](https://ma.tt/) couldn’t be there this year, but there were
some super interesting fireside conversations with Rich Tabor, Mary Hubbard, and
[Matias Ventura](https://matiasventura.com/) about the future of WordPress and where
it’s going. More importantly, they spoke about why we need to keep the web open 
and not succumb to the closed web of some AI tech bros – and why we should be absolutely
shouting about this. What better place to do that than a WordPress community full
of enthusiasts and open-source advocates?

Finally, the after-party. Needless to say, there was a lot to cram into this day.
As you can see from my [TikTok](https://www.tiktok.com/@elliottrichmondwp?is_from_webapp=1&sender_device=pc),
it’s a little bit more fast-paced than my first day. The after-party was super good
because it was just a case of walking around, getting introduced to other people,
and meeting folks that I’d known of for years. By the way, it was great to meet 
[Danny van Kooten](https://www.dannyvankooten.com/) after all this time, and again,
we weren’t chatting about WordPress but about one of my other favourite pastimes–
pizza!

I remember chatting with a few folks and not realising that they knew who I was.
Hearing the phrase, “Oh, [you’re Elliott, the one with the weird half-face profile](https://elliottrichmond.co.uk)
thing…” was ace! It was just the weirdest experience I’ve had in a really, really
good way from my years of attending WordCamp’s, and particularly WordCamp Europe.

And I can’t leave it there without mentioning [John Blackbourn](https://johnblackbourn.com/),
a friendly Englishman who also resides in Italy – one of my favourite European destinations
for obvious reasons. I feel like I’ve known John for years, but we’ve never actually
met; in fact, his brother [Simon](https://lumpylemon.co.uk/) and I know each other
much better! It was also great to meet [Joe Dolson](https://www.joedolson.com/) 
and chat about more contributions to WordPress. WordPress is more than just software;
there is an underlying community of people who are more than just colleagues – they
are like extended family members who you just haven’t met yet. It’s wild!

## Day 4: Dragons and Reflections

I had one more day in Kraków just to wander around the Old Town. Coincidentally,
the city was celebrating a dragon festival that weekend, so although it was really
busy, there was a special kind of buzz. It allowed me to just chill out, wander 
the beautiful streets of the Old Town, and soak up the atmosphere. It was a beautiful,
sunny day, and on reflection, it allowed me to just think about a special WordCamp
and some of the amazing conversations and connections that I made this time around.

I loved Kraków so much that I think we – myself and my wife – will be revisiting
to celebrate our second wedding anniversary, which happened to be this very WordCamp
weekend. My wife, being the absolute star that she is, allowed me to attend WordCamp,
but I will return the favour by taking her back to Kraków so we can share the experience
together.

I cannot wait for [Málaga](https://europe.wordcamp.org/2027/)! It will be my birthday
on the 28th so even better! (Yes the day after WordPress) I hope you’ll be there.
If you know me, do come and say hi or make sure to put something in the diary. Thank
you so much to the WordPress community. I love you so much, and I look forward to
seeing you all again in 2027!
