WordPress Default Themes Overview
Learning Objectives
- Explore the evolution of WordPress default themes
- Understand the features of each Twenty series theme
- Learn the differences between block themes and classic themes
- Identify the best use cases for each default theme
- Compare features across different theme generations
- Understand Full Site Editing (FSE) capabilities
- Learn how to choose the right default theme for your project
- Master theme patterns and template parts
Introduction to WordPress Default Themes
WordPress releases a new default theme each year, showcasing the latest features and best practices in theme development. These themes serve as both functional starting points and educational resources for developers.
Twenty Twenty-Four
Block Theme Latest VersionTwenty Twenty-Four Theme Preview
Key Features
Complete control over all site elements through the block editor
Extensive collection of pre-designed block patterns
Multiple design presets with one-click switching
Mobile-first approach with fluid typography
Best For:
- Modern portfolio websites
- Business sites requiring flexibility
- Blogs with visual focus
- Sites needing extensive customization without code
// theme.json configuration example
{
"$schema": "https://schemas.wp.org/wp/6.4/theme.json",
"version": 2,
"settings": {
"appearanceTools": true,
"layout": {
"contentSize": "650px",
"wideSize": "1200px"
},
"spacing": {
"units": ["px", "em", "rem", "vh", "vw", "%"]
}
}
}
Twenty Twenty-Three
Block ThemeKey Features
Clean, typography-focused layout
Diverse design options from minimal to bold
Beautiful font combinations and readability
WCAG 2.1 AA compliant
Pros
- Lightweight and fast
- Perfect for blogging
- Easy to customize
- No JavaScript dependencies
Cons
- Requires block editor knowledge
- Limited built-in functionality
- May be too minimal for some
Twenty Twenty-Two
First Block ThemeRevolutionary Features
Twenty Twenty-Two was WordPress's first default block theme, introducing Full Site Editing to the masses.
Pioneered full site editing capabilities
Edit headers, footers, and templates visually
Site-wide design system control
Classic Themes Comparison
| Theme | Year | Type | Customizer | Block Editor | FSE | Best For |
|---|---|---|---|---|---|---|
| Twenty Twenty-One | 2021 | Classic | ✓ | ✓ | ✗ | Accessibility-focused sites |
| Twenty Twenty | 2020 | Classic | ✓ | ✓ | ✗ | Flexible business sites |
| Twenty Nineteen | 2019 | Classic | ✓ | ✓ | ✗ | Gutenberg showcase |
| Twenty Seventeen | 2017 | Classic | ✓ | ~ | ✗ | Business websites |
| Twenty Sixteen | 2016 | Classic | ✓ | ~ | ✗ | Traditional blogs |
| Twenty Fifteen | 2015 | Classic | ✓ | ✗ | ✗ | Clean blogging |
Theme Evolution Timeline
First default theme in the Twenty series, introduced custom menus and headers
Magazine-style layout, featured content slider
Video headers, customizer focus, business-oriented
First theme designed for Gutenberg block editor
Revolutionary: First block theme with Full Site Editing
Working with Default Themes
Checking Installed Themes
<?php
// Get all themes
$themes = wp_get_themes();
foreach ($themes as $theme) {
echo $theme->get('Name') . ' - Version: ' . $theme->get('Version') . '<br>';
// Check if it's a default theme
if (strpos($theme->get_stylesheet(), 'twenty') !== false) {
echo 'This is a default WordPress theme<br>';
}
}
// Get current theme
$current_theme = wp_get_theme();
echo 'Active Theme: ' . $current_theme->get('Name');
// Check if block theme
if (wp_is_block_theme()) {
echo 'Current theme is a block theme';
}
?>
Theme Support Detection
<?php
// Check theme features
$features = array(
'custom-logo',
'post-thumbnails',
'post-formats',
'html5',
'custom-header',
'custom-background',
'widgets',
'menus',
'editor-styles',
'wp-block-styles',
'align-wide'
);
foreach ($features as $feature) {
if (current_theme_supports($feature)) {
echo "✓ Theme supports: $feature<br>";
} else {
echo "✗ No support for: $feature<br>";
}
}
// Check if using block templates
if (function_exists('wp_is_block_theme') && wp_is_block_theme()) {
echo "Theme uses block templates (FSE)<br>";
// Get block template parts
$template_parts = get_block_templates(array('post_type' => 'wp_template_part'));
echo "Template parts: " . count($template_parts) . "<br>";
}
?>
Choosing the Right Default Theme
Decision Matrix
Advanced Default Theme Features
Block Theme Patterns
<?php
// Register custom pattern for block themes
register_block_pattern(
'twentytwentyfour/hero-section',
array(
'title' => __('Hero Section', 'twentytwentyfour'),
'description' => __('A hero section with heading and button', 'twentytwentyfour'),
'categories' => array('featured', 'header'),
'content' => '<!-- wp:group {"align":"full"} -->
<div class="wp-block-group alignfull">
<!-- wp:heading {"level":1} -->
<h1>Welcome to Our Site</h1>
<!-- /wp:heading -->
<!-- wp:buttons -->
<div class="wp-block-buttons">
<!-- wp:button -->
<div class="wp-block-button">
<a class="wp-block-button__link">Get Started</a>
</div>
<!-- /wp:button -->
</div>
<!-- /wp:buttons -->
</div>
<!-- /wp:group -->',
)
);
// Modify theme.json programmatically
add_filter('wp_theme_json_data_theme', function($theme_json) {
$new_data = array(
'version' => 2,
'settings' => array(
'color' => array(
'palette' => array(
array(
'slug' => 'custom-primary',
'color' => '#0073aa',
'name' => 'Custom Primary'
)
)
)
)
);
return $theme_json->update_with($new_data);
});
?>
Classic Theme Customization
<?php
// Add customizer options to Twenty Twenty-One
add_action('customize_register', function($wp_customize) {
// Add new section
$wp_customize->add_section('custom_options', array(
'title' => __('Custom Options', 'twentytwentyone'),
'priority' => 30,
));
// Add setting
$wp_customize->add_setting('header_style', array(
'default' => 'default',
'transport' => 'refresh',
));
// Add control
$wp_customize->add_control('header_style', array(
'label' => __('Header Style', 'twentytwentyone'),
'section' => 'custom_options',
'type' => 'select',
'choices' => array(
'default' => __('Default', 'twentytwentyone'),
'centered' => __('Centered', 'twentytwentyone'),
'minimal' => __('Minimal', 'twentytwentyone'),
),
));
});
// Apply customizer settings
add_action('wp_head', function() {
$header_style = get_theme_mod('header_style', 'default');
if ($header_style === 'centered') {
echo '<style>
.site-header { text-align: center; }
.primary-navigation { justify-content: center; }
</style>';
}
});
?>