For over a decade (2010–2020), WordPress theme development looked the same: You created header.php, footer.php, a loop in index.php, and styles in style.css. Logic was in PHP, appearance in CSS.
With WordPress 5.9 came the Full Site Editing (FSE) revolution (now simply called “Site Editor”), and in 2026 we face a dilemma: Should we still write themes in PHP, or switch fully to blocks and HTML?
In this article, we will break down the differences between Classic Themes, Block Themes, and the Hybrid approach.
1. Anatomy: PHP vs HTML
This is a fundamental difference that terrifies many “old school” programmers.
Classic theme
Based on PHP files. When WordPress loads a page, the PHP engine combines the header, loop, and footer.
- Structure:
header.php,page.php,sidebar.php. - Logic: You can freely mix PHP code with HTML (e.g.,
if ( is_user_logged_in() )). - Pro: Full control over code, easy to inject business logic.
- Con: The user cannot edit the header without knowing code.
Block theme
Based on HTML files with block comments. There is no PHP in template files!
- Structure:
templates/index.html,parts/header.html. - Logic: None! Template files are static HTML. All dynamics rely on blocks (e.g.,
<!-- wp:post-title /-->). - Pro: The user can edit the ENTIRE site (including the header) in the visual editor.
- Con: Harder to add custom PHP logic (requires creating custom Blocks or Shortcodes).
2. The heart of the theme: Functions.php vs theme.json
In the classic era, functions.php was a dumping ground for everything: registering menus, sidebars, image sizes, and loading CSS.
In the block era, theme.json takes control. It is a powerful configuration file that controls:
- Color Palette: You define colors available to the user.
- Typography: Font sizes, font families.
- Layout: Container width (contentSize, wideSize).
- Block Availability: You can block the user from using specific blocks.
Example theme.json in 2026:
{
"version": 3,
"settings": {
"color": {
"palette": [
{ "slug": "primary", "color": "#0055FF", "name": "Brand Blue" }
]
},
"typography": {
"fontSizes": [
{ "slug": "small", "size": "14px" }
]
}
}
}
Instead of writing 500 lines of CSS, you configure this in JSON, and WordPress generates optimized CSS and CSS Variables on the frontend and in the editor.
3. What about widgets and menus?
In Block Themes, there is no Widgets or Menus screen (in Appearance -> Menus).
- Instead of Widgets, you have Template Parts. The footer is just an HTML meta-file that you edit like any other post.
- Instead of Menus, you have the Navigation Block. You edit it directly in the header.
For clients used to old WP, this is a culture shock. “Where are my widgets?!”. Gone. Now everything is a block.
4. Performance
Here Block Themes win by a knockout.
- Style Loading: WordPress loads CSS only for blocks that are actually on the page. Classic themes often load one big
style.css(100KB) on every subpage. - HTML: The structure generated by FSE is (usually) cleaner, though it can have “div-itis” (many wrappers).
- Core Web Vitals: Block themes like Twenty Twenty-Six score 100/100 in Lighthouse almost “out of the box”.
5. Strategy for 2026: What to choose?
As an agency or freelancer, you must decide.
Choose a Classic Theme (or Hybrid) if:
- You are building a complex portal with a lot of PHP logic in views (e.g., advanced display conditions).
- The client is a “Technophobe” and you fear they will break the layout if you give them full editing (FSE).
- You use a Page Builder (Elementor/Divi) – they still work better on classic structure.
Choose a Block Theme if:
- You are building a simple corporate site, blog, or portfolio.
- You care about maximum performance (Green PageSpeed).
- You want to be “Future Proof” (WordPress Core develops mainly FSE).
- The client wants the ability to edit footers and headers themselves without calling you.
The hybrid approach
This is the golden mean. A Classic PHP theme that adds support for theme.json (to have the color palette and typography in Gutenberg) but keeps header.php for structural safety.
Summary
The WordPress world has split into two camps. Don’t fight it. Learn the syntax of theme.json – it’s a skill as important in 2026 as knowing CSS was in 2015.



