If you've been developing WordPress websites for several years, there's a good chance you've spent a lot of time working with files like:
header.php
footer.php
single.php
page.php
archive.php
functions.php
That's certainly where most of my WordPress development experience has been.
But WordPress has been changing.
With the Block Editor, Site Editor, block themes, patterns, and theme.json, WordPress now offers a very different approach to theme development.
So I decided to take a closer look at the question:
If you're already comfortable building classic WordPress themes, is it worth moving toward block themes in 2026?
This isn't an article written from the perspective of someone who has spent years exclusively building block themes. Most of my own WordPress work has traditionally involved classic themes.
Instead, I'm looking at block themes from the perspective of an experienced WordPress developer who is exploring how the platform is evolving—and where the newer approach fits alongside the architecture I've used extensively.
Classic Themes vs Block Themes
WordPress currently identifies two primary theme types:
- Classic themes
- Block themes
According to the official WordPress Theme Developer Handbook, classic themes primarily use PHP, JavaScript, and CSS and can make extensive use of WordPress functions, hooks, and filters.
Block themes, on the other hand, are built around block markup and HTML-based templates and allow users to edit more areas of the website through the Site Editor.
A simplified comparison looks like this:
| Classic Theme | Block Theme |
|---|---|
| PHP templates | HTML block templates |
single.php |
templates/single.html |
header.php |
parts/header.html |
footer.php |
parts/footer.html |
| Template hierarchy | Block-based templates |
| Custom PHP logic | Blocks + APIs + plugins |
| Customizer / theme options | Site Editor / Styles |
theme.json optional |
theme.json commonly used |
This doesn't mean classic themes are obsolete.
They aren't.
WordPress continues to maintain documentation for classic theme development, and classic themes remain a valid part of the platform.
What I'm Used to: Classic Themes
A traditional WordPress theme might have a structure like this:
my-theme/
├── style.css
├── functions.php
├── index.php
├── header.php
├── footer.php
├── sidebar.php
├── single.php
├── page.php
├── archive.php
└── 404.php
The templates contain PHP and WordPress template functions.
For example:
<?php get_header(); ?>
<main class="site-content">
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<article <?php post_class(); ?>>
<h1><?php the_title(); ?></h1>
<div class="entry-content">
<?php the_content(); ?>
</div>
</article>
<?php endwhile; ?>
<?php endif; ?>
</main>
<?php get_footer(); ?>
For developers who have spent years working with WordPress, this architecture is very familiar.
You have direct access to PHP, the Loop, template files, hooks, filters, conditional tags, queries, and all the other tools that make WordPress flexible.
The official WordPress documentation still describes this as the classic theme approach.
So What Is a Block Theme?
A block theme changes the way the theme's templates are constructed.
Instead of building your main templates using PHP, you use HTML files containing WordPress block markup.
A simplified block theme might look like:
my-block-theme/
├── style.css
├── theme.json
├── templates/
│ ├── index.html
│ ├── single.html
│ └── page.html
└── parts/
├── header.html
└── footer.html
A single.html template could look something like:
<!-- wp:template-part {"slug":"header"} /-->
<!-- wp:group {"tagName":"main"} -->
<main class="wp-block-group">
<!-- wp:post-title /-->
<!-- wp:post-featured-image /-->
<!-- wp:post-content /-->
</main>
<!-- /wp:group -->
<!-- wp:template-part {"slug":"footer"} /-->
There's no traditional PHP Loop here.
Instead, the template is composed of blocks.
WordPress defines a block theme as a theme that has an index.html template in the templates or block-templates directory, with templates built from block markup.
The Big Difference: Who Controls the Layout?
This is probably the most important conceptual difference.
With a traditional classic theme, the developer typically controls the site's structure through PHP template files.
With a block theme, the Site Editor can be used to edit areas such as:
- Header
- Footer
- Navigation
- Templates
- Template parts
- Global styles
- Other block-based content
This means the site owner can have significantly more control over the structure of the website without modifying PHP files.
WordPress describes this as one of the major advantages of block themes.
For a client who frequently wants to modify the website layout, this can be a big advantage.
Where Does theme.json Fit?
This is one of the areas I find particularly interesting.
theme.json is a configuration file that allows developers to define global settings and styles for a WordPress theme.
And importantly:
theme.jsonisn't exclusive to block themes.
WordPress's official documentation explicitly states that theme.json works with both block and classic themes.
That makes it especially interesting for developers who primarily work with classic themes.
You don't necessarily need to abandon your existing development approach to start using modern WordPress features.
A Simple theme.json
A basic modern theme.json could look like this:
{
"$schema": "https://schemas.wp.org/wp/6.6/theme.json",
"version": 3,
"settings": {
"appearanceTools": true,
"layout": {
"contentSize": "720px",
"wideSize": "1200px"
}
}
}
There are two properties here that developers should understand:
"$schema"
and:
"version": 3
They aren't the same thing.
version
The version property specifies which theme.json schema version the theme is using.
As of the current official documentation, Version 3 is the latest theme.json version. Version 3 works with WordPress 6.6 and later.
$schema
The $schema property tells development tools which JSON Schema to use.
This can provide features such as:
- Autocomplete
- Validation
- Editor hints
- Error reporting
- Property suggestions
WordPress provides schemas for individual WordPress versions, and its documentation recommends using the oldest WordPress version your theme supports when choosing a version-specific schema.
For example:
{
"$schema": "https://schemas.wp.org/wp/6.6/theme.json",
"version": 3
}
If your theme targets a different minimum WordPress version, use the appropriate schema URL for that target.
For the latest development schema, WordPress also provides:
https://schemas.wp.org/trunk/theme.json
However, for a production theme, targeting the appropriate stable WordPress version is generally safer than relying on trunk.
Why Is theme.json Important?
theme.json can control a surprisingly large part of the WordPress design system.
For example:
{
"$schema": "https://schemas.wp.org/wp/6.6/theme.json",
"version": 3,
"settings": {
"color": {
"palette": [
{
"slug": "primary",
"color": "#2563eb",
"name": "Primary"
},
{
"slug": "dark",
"color": "#111827",
"name": "Dark"
}
]
},
"typography": {
"fluid": true
}
}
}
You can use theme.json for things such as:
- Color palettes
- Typography
- Spacing
- Layout
- Borders
- Shadows
- Block settings
- Custom templates
- Template parts
- Patterns
- Global styles
The official documentation describes theme.json as a configuration file for global settings, styles, templates, template parts, and more.
Classic Themes Can Use Modern WordPress Features Too
This is an important point that sometimes gets lost in the block-theme discussion.
You don't necessarily have:
Classic theme OR modern WordPress.
There is a middle ground.
WordPress documentation specifically notes that classic themes can use theme.json and take advantage of block-editor functionality.
The WordPress community sometimes calls these hybrid themes—classic themes that adopt some modern block-related functionality.
WordPress notes that "hybrid theme" is a commonly used community term rather than an official third theme type.
This is actually an interesting option for developers like me who have extensive experience with classic themes.
You can gradually adopt newer WordPress capabilities without necessarily rewriting an entire project.
Template Parts: PHP vs Blocks
Here's another example of the architectural difference.
In a classic theme, you might have:
<?php get_header(); ?>
...
<?php get_footer(); ?>
WordPress also provides functions such as:
get_template_part();
for reusing template components.
With a block theme, you can use template-part blocks:
<!-- wp:template-part {"slug":"header"} /-->
<!-- wp:post-content /-->
<!-- wp:template-part {"slug":"footer"} /-->
The underlying concept is similar:
Reuse common parts of your website.
But the implementation is different.
The classic approach uses PHP templates and WordPress functions.
The block approach uses block markup and template parts.
Does a Block Theme Mean No PHP?
No.
This is another misconception worth clearing up.
WordPress is still a PHP application.
Plugins can still register:
- Custom post types
- Taxonomies
- REST API endpoints
- Hooks
- Filters
- Custom functionality
- Server-side logic
For example:
add_action( 'init', function () {
register_post_type( 'portfolio', [
'public' => true,
'label' => 'Portfolio',
'supports' => [
'title',
'editor',
'thumbnail'
]
] );
} );
The difference is primarily in how the theme handles presentation and templates, not that PHP suddenly disappears from WordPress.
In fact, keeping application/business functionality in plugins rather than tying it tightly to the theme is often a useful architectural approach.
When Would I Still Choose a Classic Theme?
This is where my own experience influences my answer.
If I were working on an existing project that is already built around a classic theme and works well, I wouldn't automatically recommend rebuilding it as a block theme.
There has to be a reason.
For example, I'd be comfortable continuing with a classic theme when:
1. The existing architecture works
If the site is stable, maintainable, and meeting the client's requirements, changing architecture just because a newer approach exists doesn't necessarily provide enough value.
2. The project relies heavily on custom PHP templates
Some projects have complex template logic and custom integrations where the traditional PHP architecture is already a good fit.
3. The team knows the classic architecture well
Development speed and maintainability matter.
If a team can build and maintain a classic theme efficiently, that has real value.
4. The client doesn't need full Site Editor control
If the website structure is intentionally controlled by developers, the biggest advantage of a block theme may not be necessary.
When Would I Consider a Block Theme?
For a new project, however, I would definitely consider a block theme.
Especially when:
The client wants visual control
If the client wants to modify headers, footers, templates, and global styles without involving a developer, the Site Editor can be very useful.
The website is heavily block-based
If the entire content strategy already revolves around Gutenberg, patterns, and blocks, a block theme can be a natural fit.
You want a centralized design system
theme.json provides a structured way to define colors, typography, spacing, layout, and other design settings.
You're building a new theme from scratch
A new project gives you an opportunity to adopt the architecture without having to migrate years of existing code.
WordPress's current Theme Handbook describes block themes as the modern method of building WordPress themes and says its theme-development documentation primarily focuses on this approach.
What About Performance?
This is one area where I would avoid making absolute claims.
You'll sometimes hear:
"Block themes are faster."
Or:
"Classic themes are faster."
Neither statement is universally true.
Performance depends on the implementation.
A poorly optimized block theme can be slow.
A carefully built classic theme can be extremely fast.
Things such as:
- Hosting
- Database queries
- Images
- JavaScript
- CSS
- Third-party scripts
- Plugins
- Caching
- Page complexity
can all have a major impact.
So I wouldn't choose a theme architecture based solely on the assumption that one is automatically faster.
What Should a Classic-Theme Developer Learn?
This is probably the question I'm asking myself as much as anyone reading this article.
If you've already spent years learning classic WordPress development, should you throw all of that knowledge away?
Definitely not.
I would look at it as an expansion of your existing skills.
A reasonable learning path could be:
Classic WordPress Development
↓
Gutenberg
↓
Block Editor
↓
theme.json
↓
Block Patterns
↓
Block Themes
↓
Custom Blocks
Your existing knowledge of:
- PHP
- WordPress hooks
- Filters
- Template hierarchy
- The Loop
- Custom post types
- REST APIs
- Plugins
- Security
- Performance
doesn't become useless.
You're simply adding another layer to your WordPress toolkit.
My Perspective as a WordPress Developer
Most of my WordPress development experience has been with classic themes, so I'm not going to pretend that I've spent the majority of my career building block themes.
I haven't.
But that's exactly why I found the evolution interesting.
When you've been working with WordPress for years, it's easy to keep using the architecture you're comfortable with.
And there is nothing wrong with that when the architecture is appropriate.
But WordPress is clearly investing heavily in the block-based direction.
The official Theme Handbook now describes block themes as the modern method of building themes and focuses its current guidance heavily on that approach.
For me, that doesn't mean:
"Classic themes are dead."
It means:
"As WordPress developers, we should understand where the platform is going, even if our current projects still use the architecture we're most experienced with."
That's the approach I'm taking.
I'm not replacing my classic-theme knowledge.
I'm expanding it.
So, Should You Switch?
My answer is:
It depends.
If you're maintaining an existing classic WordPress website that works well, I wouldn't migrate it simply because block themes are newer.
If you're starting a new project, I'd at least evaluate whether a block theme makes sense.
And if you're a WordPress developer who has mostly worked with classic themes, I'd definitely recommend learning:
Block Editor
theme.json
Patterns
Template Parts
Site Editor
Block Themes
Custom Blocks
You don't need to become a block-theme expert overnight.
But understanding the architecture will make it much easier to work with modern WordPress projects.
Final Thoughts
WordPress theme development isn't necessarily a choice between:
Classic = Old
Block = New
It's more nuanced than that.
Classic themes remain powerful and relevant.
Block themes provide a newer approach that gives WordPress users much greater control over templates and site-wide design through blocks and the Site Editor.
And theme.json provides an interesting bridge between the two worlds because it can be used with both classic and block themes.
For developers who have spent years working with classic themes, the goal shouldn't be to forget everything we already know.
The goal is to understand the new architecture well enough to decide when it actually makes sense to use it.
That's where I currently see the value in learning block themes.
Not because classic themes have suddenly become irrelevant—but because WordPress itself is evolving, and we should evolve with it.
Official WordPress References
This article is based primarily on the official WordPress Developer Documentation:
WordPress Theme Developer Handbook
https://developer.wordpress.org/themes/What Is a Theme?
https://developer.wordpress.org/themes/getting-started/what-is-a-theme/Block Editor — Themes
https://developer.wordpress.org/block-editor/how-to-guides/themes/Introduction to
theme.json
https://developer.wordpress.org/themes/global-settings-and-styles/introduction-to-theme-json/theme.jsonVersion 3 Reference
https://developer.wordpress.org/block-editor/reference-guides/theme-json-reference/theme-json-living/Developing with
theme.json
https://developer.wordpress.org/block-editor/how-to-guides/themes/global-settings-and-styles/Classic Themes
https://developer.wordpress.org/themes/classic-themes/
All technical claims and examples in this article should be checked against the official documentation for the WordPress version your project supports, particularly when working with theme.json versions and schemas.
Top comments (0)