Custom WordPress Development

How I approach ACF field architecture

Updated June 29, 2026 3 min read
How I approach ACF field architecture

Acf Field Architecture — what you get

The best ACF work gives editors confidence while keeping templates predictable and testable. That balance doesn’t come from the fields themselves — it comes from how you structure them before you write a single template tag.

After enough WordPress builds, you learn that the field structure is the product, at least from the editor’s side. A client never sees your template hierarchy or your query logic. They see a row of fields, and either those fields make sense or they don’t. So I design the field architecture first, around the job the editor is actually doing, and let the templates follow.

Start from the editor’s task, not the design

It’s tempting to translate a design straight into fields: hero heading, hero subheading, hero image, hero button. That works until the second page type needs a slightly different hero, and now you have a second set of nearly-identical fields. Instead I start by asking what the editor needs to accomplish on each screen, and design fields that describe meaning, not appearance.

A field named proof_points survives a redesign. A field named grey_box_text does not. Naming for intent is the cheapest future-proofing there is.

Group by intent, and keep groups shallow

I group fields by the decision the editor is making, not by where they land on the page. I also resist deep nesting. Every extra layer of repeater-inside-repeater is a layer the editor has to understand and a layer your templates have to defend against. If I can express something with a flat repeater and clear sub-fields, I will.

On this site, for example, location pages use a small, predictable set — heading, intro, proof points, FAQs — rather than a sprawling flexible-content builder. That keeps every location page consistent and makes the templates trivial to reason about.

Predictable beats powerful

Flexible content fields are genuinely useful, but they’re also where editor confidence goes to die if you over-use them. A page where anything can go anywhere is a page no one wants to touch. I reserve flexible layouts for places that truly need editorial freedom and use rigid, named fields everywhere else. An editor who knows exactly what each field does will keep the site updated; one who’s afraid of breaking the layout will email you instead.

Sensible defaults and honest fallbacks

Every field that can be empty will be empty at some point. So I give fields sensible defaults and write templates that degrade honestly. If there’s no intro, the section doesn’t render an empty container; it disappears. If there’s no FAQ, no FAQ block appears — and no broken schema is emitted either. Fallback states are part of the field architecture, not an afterthought in the template.

Keep templates “dumb”

The payoff of good field design is that templates get boring, and boring is exactly what you want. When I find myself writing complex conditionals in a template, that’s usually a signal the field structure is wrong — the decision should have been made in the field design. Dumb templates are predictable and testable: given a set of field values, you know precisely what comes out.

Validate the data, not just the design

One last habit: I add light validation where it prevents real mistakes — marking genuinely required fields as required, constraining a number field to a sensible range, limiting an image field to the aspect ratio the design needs. The goal isn’t to lock editors out; it’s to make the wrong thing hard and the right thing obvious. Validation is the cheapest support ticket you’ll ever avoid.

Good ACF architecture isn’t about clever fields. It’s about giving the people who run the site every day the confidence to do so — and giving yourself templates that behave. It also makes the eventual launch handoff far shorter. If you want this kind of structure on your build, that’s the core of how I do custom WordPress development.

Have a WordPress project or problem to solve?

Book a short call and I will help make it shippable — from a quick fix to a full custom build.

Book a call

Related articles