Block, classic or builder and what follows from the choice
Block theme or classic theme
A block theme describes its templates as blocks and its design decisions in theme.json. Editors can adjust headers, footers and page templates in the Site Editor, and WordPress loads styles only for the blocks that appear on a page. For a new content site this is our default. A classic theme, built from PHP templates and the template hierarchy, is still the better choice when a plugin outputs its own PHP templates that you need to control closely, or when years of existing content rely on shortcodes and widgets. There is also a middle path: a classic theme that adopts theme.json and block patterns, which gives editors modern tools without rewriting every template.
What theme.json really decides
This file is where the design system becomes enforceable. We define the color palette, font families and sizes, spacing scale and content widths as presets, then switch off the controls that let people leave the system, such as custom colors and arbitrary font sizes. An editor still chooses, but from the brand's options. Change a preset later and every block using it follows. Designers hand us tokens from Figma and we map them one to one, which settles most arguments about whether the build matches the design.
When a page builder is the right tool
Elementor and Divi are popular for good reason. A marketing team can launch a landing page in an afternoon without a developer, and many people already know the interface. The costs are real too. Builders add markup and assets that need careful tuning to pass Core Web Vitals, and content created in them is stored in the builder's own format, so leaving later means rebuilding pages. We recommend a builder when page volume and editor independence matter more than raw speed. We advise against one where performance is the product, such as large stores and course platforms with many logged-in users.
Keeping functionality out of the theme
Post types, shortcodes, integrations and checkout logic belong in a plugin. A theme that registers them holds your content hostage, because switching themes makes that content vanish from the admin. During a redesign we move such code into a small site plugin first. It is unglamorous work, and it is why the next redesign will cost less. Where the logic is substantial it becomes a project of its own under custom plugin development.
Testing before handover
Each template is checked with awkward content: the longest title, a post with no featured image, a table on a narrow phone. We test keyboard navigation and screen reader output on menus, forms and modals, run Lighthouse and axe on key templates, and compare the build against the design at the agreed breakpoints.