ACF Pro field architecture: a default starting point

The skeleton we start with on every WordPress build: flexible content blocks, options pages, and the rules we use to keep the dashboard livable.

If you've inherited a WordPress site from another agency, you've probably opened the dashboard, seen forty-three custom fields on the homepage, and felt your morale leave your body. ACF is a powerful tool. It is also a tool that produces hostile dashboards in the wrong hands.

Here's the architecture we use as a starting point on every custom WP build.

The homepage and any landing-style page uses one flexible content field, typically called Sections, and nothing else. Each layout inside that flexible content field is a self-contained block: Hero, Two Column Text and Image, Feature Grid, Testimonial, CTA. Editors compose pages by stacking layouts, not by filling out a dozen separate fields. The mental model matches what they see on the front end.

Global site fields (header navigation, footer columns, default SEO, social links, contact info) go on a dedicated Options page rather than a single mythical "settings" post. Options pages are structured like the rest of the dashboard, not like a junk drawer.

ACF is invisible when it’s done well. The editor just sees a logically organized page composer.

Posts and custom post types get a tight schema. Article gets Headline, Standfirst, Hero Image, Author (a relationship to a People CPT), Body (flexible content again), and Footer Links. That's it. If a field is needed on only one post, it's not a field. It's content inside the body.

Field labels are written for editors, not for developers. Not "post_meta_image_url_alt", but "Alt text for the cover image (used by screen readers and SEO)". The instruction text is part of the label.

The whole architecture is exported to a single ACF JSON file in the theme repository, version-controlled, and synced. Field changes happen in the codebase, not in the dashboard.

The goal isn't to be clever. It's to make a dashboard that an editor can return to in six months and still find their way around. ACF is invisible when it's done well. The editor just sees a logically organized page composer.

Filed under WordPress. Have a question? Get in touch.

Recent postsAll posts
Apr 22, 2026

Why we still write HTML before opening Figma

A composition argument that survives every redesign cycle: prototype in the medium, then design the polish on top.

Read
Feb 9, 2026

Migrating Squarespace to Shopify without losing search rankings

A redirect map, an hreflang plan, and a DNS cutover sequence: the parts of a migration that determine whether the new site arrives healthy.

Read
Jan 14, 2026

What we measure, and what we don't

An argument for fewer dashboards, fewer KPIs, and a single number per channel that the founder can recall from memory.

Read
Keep the thread going

Spotted something worth a reply?

We read every note. Send a thought, a counter-argument, or a brief for the thing you're building.

Send a noteStart a project