Sage and Blade
Why does your WordPress theme get harder to change every year?
I build WordPress themes on Roots Sage with Blade templates. The code has a clear structure, components are reused instead of copied, and another developer can take the theme over without rewriting it from scratch.
Most WordPress themes start the same way: a general-purpose template is bought, a page builder is added, and everything else is patched with snippets of PHP dropped straight into the theme files. It works for the first few months. Then a new section arrives that looks almost like an existing one, so it gets copied, and a year later there are five nearly identical pieces of code that all have to change together. The cost of every further edit grows even though the requests stay just as small. That is not a WordPress problem, it is a problem with how the theme was written.
Sage is a starter theme from the Roots team that brings WordPress what Laravel has had for years: logic separated from templates, Blade as the templating language, dependencies managed through Composer and a modern frontend build. Templates are assembled from components, data is prepared outside the template, and the file hierarchy stays readable. The result is not just nicer code. It is a theme where, a year later, you can still find the exact place to change in a couple of minutes instead of half a day.
01
What Sage changes compared to a regular theme
Sage is not a finished design with a settings panel, it is a clean base you write a custom theme on. It gives the project a folder structure where it is obvious what is a template, what is a component, what is styling and what is logic. Dependencies are handled with Composer, so libraries do not end up hand-copied into the repository. The frontend is compiled with a modern build, which means smaller CSS and JavaScript than a general-purpose theme that loads everything for every possible case. For a client the important part is that the result is standard and readable to a developer who did not write it.
- A clear hierarchy of templates and components
- Composer instead of hand-copied libraries
- A frontend build with a much smaller output
- A structure every Roots developer already knows
02
Blade templates instead of tangled PHP
Blade is the templating language known from Laravel. Instead of alternating PHP tags with HTML, you write short readable syntax: layout inheritance, sections, conditions, loops and component includes. The template stays about what is displayed, and the logic that prepares the data lives outside it. Output is escaped automatically, which removes an entire class of security bugs caused by unescaped content. In practice it means a less experienced person can change wording or the order of sections without risking that the whole page breaks.
- Layout inheritance instead of copied headers
- Readable conditions and loops inside the template
- Automatic output escaping
- Logic separated from presentation
03
Components that do not exist in five copies
A product card, a testimonial box, a call-to-action section or a pricing table is written once as a component in Sage and then simply used with different data. When the card needs to look different, one file changes and the change appears everywhere. That is the biggest difference from a page builder, where the same blocks are assembled by hand on every page and quietly drift apart over time. Components also work as design documentation: the project contains a list of building blocks a new page can be assembled from without inventing anything.
- One change applies across every page
- Identical elements actually stay identical
- New pages are assembled from existing blocks
- Less code to maintain with every new request
04
Editing content: ACF, Gutenberg and page builders
Sage does not conflict with content management. Custom fields through ACF, native Gutenberg blocks and custom blocks can all be rendered through Blade templates, so the editor works in the familiar admin while the code stays in one place. A page builder can stay for campaign pages, but I recommend keeping the core of the site in components, where a change has a predictable reach. When rebuilding an existing site I always start by finding out who actually edits the content and which parts they must be able to change without a developer.
- ACF fields rendered through Blade components
- Custom Gutenberg blocks with their own template
- Editors work in the normal WordPress admin
- A page builder only where it genuinely helps
05
When I recommend Sage and what it costs
Sage makes sense for sites that will keep growing: company websites with several page types, content projects, WooCommerce stores with a custom design and any project where another developer is expected to join. For a one-off micro-site with three sections it is unnecessary overhead and a simpler theme is enough. There is no lock-in either: the result is a standard WordPress site, just with a properly written theme. I work at 40 EUR per hour including VAT and a custom Sage theme typically lands between 20 and 45 hours.
- Right for sites that will keep growing
- Overkill for a one-off micro-site
- No dependency on a single supplier
- Roughly 20 to 45 hours at 40 EUR per hour including VAT
?
Frequently asked questions about Sage and Blade
What is Sage and how does it differ from a regular WordPress theme?
Sage is a starter theme from the Roots team. You do not get a finished design with dozens of settings, you get a clean base with Blade templates, Composer and a modern build. The design is written to measure, so the site does not carry code for features you will never use.
Will content still be managed in the normal WordPress admin?
Yes. Sage only changes how the theme is written. Editors keep working in the standard admin, including Gutenberg and custom fields through ACF. The difference is in how content is rendered on the frontend, not in how it is entered.
Can another developer take this theme over from you?
That is one of the main reasons I use Sage. The structure is standard and familiar across the Roots community, the code lives in a repository and dependencies are in composer.json. I also hand over a short description of the components and how to run the project locally.
Can an existing theme be rewritten to Sage?
It can, but I do not do it automatically. I first go through the existing templates and find out how many are actually in use. Sites can often be rebuilt with a smaller scope than expected, because a large part of the original code is never used anywhere.
Does Blade make the site slower than plain PHP?
No. Blade compiles down to ordinary PHP and the compiled output is cached, so the difference is effectively unmeasurable. Site speed is shaped far more by the number of plugins, image sizes and hosting than by the templating language.
Want a WordPress theme that is still maintainable in three years?
Tell me how many page types the site needs and whether this is a new project or a rebuild. I will give you a scope estimate and say directly whether Sage is worth it here.
Discuss a Sage theme