Skip to main content

WordPress Default Themes Overview

Duration: 40 minutes
Module 4: Session 4.2

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.

📅
The Twenty Series Tradition
Since 2010, WordPress has released annual default themes named after the year. Each theme demonstrates new WordPress capabilities and modern web design trends.
15+
Default Themes
2010
First Twenty Theme
3
Block Themes
100%
Free & Open Source

Twenty Twenty-Four

Block Theme Latest Version
2024

Twenty Twenty-Four Theme Preview

Key Features

🎨
Full Site Editing

Complete control over all site elements through the block editor

📐
Pattern Library

Extensive collection of pre-designed block patterns

🌈
Style Variations

Multiple design presets with one-click switching

📱
Responsive Design

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 Theme
2023

Key Features

✏️
Minimalist Design

Clean, typography-focused layout

🎭
10 Style Variations

Diverse design options from minimal to bold

🔤
Typography Focus

Beautiful font combinations and readability

🌐
Accessibility First

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 Theme
2022

Revolutionary Features

Twenty Twenty-Two was WordPress's first default block theme, introducing Full Site Editing to the masses.

🚀
First FSE Theme

Pioneered full site editing capabilities

🏗️
Template Editing

Edit headers, footers, and templates visually

🎨
Global Styles

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

2010
Twenty Ten

First default theme in the Twenty series, introduced custom menus and headers

2014
Twenty Fourteen

Magazine-style layout, featured content slider

2017
Twenty Seventeen

Video headers, customizer focus, business-oriented

2019
Twenty Nineteen

First theme designed for Gutenberg block editor

2022
Twenty Twenty-Two

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

Need Full Site Editing?
Twenty Twenty-Two, Twenty-Three, or Twenty-Four
Traditional Customizer Preferred?
Twenty Twenty-One or Twenty Twenty
Accessibility Priority?
Twenty Twenty-One
Business/Corporate Site?
Twenty Seventeen or Twenty Twenty
Minimalist Blog?
Twenty Twenty-Three or Twenty Fifteen
Learning Development?
Latest theme (Twenty Twenty-Four)

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>';
    }
});
?>

Best Practices with Default Themes

⚠️
Important Guidelines
  • Never modify default themes directly - use child themes
  • Keep at least one default theme as a fallback
  • Test updates on staging before applying to production
  • Understand the theme's architecture before customizing
  • Use theme's built-in features before adding plugins
  • Follow WordPress coding standards when extending

Practice Exercise

💻
Hands-On Practice
  1. Install and activate Twenty Twenty-Four theme
  2. Explore the Site Editor and global styles
  3. Create a custom pattern using blocks
  4. Switch to Twenty Twenty-One and compare features
  5. Test responsive behavior on different devices
  6. Examine theme files and structure
  7. Try different style variations in block themes
  8. Create a simple child theme for customization

Additional Resources