How to Create a WordPress Child Theme (Step-by-Step 2026 Guide)

Every time you update your WordPress theme, any customizations you’ve made directly to the theme files are wiped out. A WordPress child theme solves this problem permanently. A child theme inherits all the styles and functionality of its parent theme — but stores your customizations separately, so updates never destroy your work. In this step-by-step 2026 guide, you’ll learn how to create a WordPress child theme manually, with a plugin, and using the new Full Site Editing (FSE) approach for block themes.

Table of Contents

What Is a WordPress Child Theme?

A WordPress child theme is a theme that derives its templates, styles, and functionality from a “parent” theme. When WordPress loads your site, it reads the child theme first. If the child theme has a custom version of a template file or CSS rule, WordPress uses the child’s version. For everything else, it falls back to the parent theme.

This inheritance system is what makes child themes so powerful. You can change any part of your theme’s look or behavior — without ever touching the parent theme’s files. When the parent theme releases an update, you apply it safely, and your customizations remain untouched in the child theme directory.

Child themes are officially supported and recommended by WordPress.org. They work with classic themes (like Astra, GeneratePress, and Kadence) and, since WordPress 6.1, with Full Site Editing block themes as well.

Why You Need a Child Theme (And What Happens Without One)

If you edit a theme’s CSS or PHP files directly — without a WordPress child theme — here’s what happens when that theme updates:

  • The theme update overwrites your custom CSS with the original files
  • Any PHP modifications you made to template files are erased
  • Custom functions added to functions.php are lost
  • Your site may look completely different — or break entirely

Theme updates happen frequently. Security patches, compatibility fixes, and feature additions mean most popular themes update multiple times per year. Without a child theme, every update is a gamble. With a child theme, updates are completely safe.

Additionally, a WordPress child theme lets you:

  • Override any parent template file without modifying the original
  • Add custom CSS that persists through updates
  • Add custom PHP functions to functions.php without conflict
  • Maintain a clean separation between your code and the theme developer’s code

Method 1: Create a WordPress Child Theme Manually

Creating a child theme manually requires access to your server via FTP, SFTP, or your host’s file manager. You need to create a new folder and two files. This method works for any classic (non-block) WordPress theme.

Step 1: Create the Child Theme Directory

Navigate to wp-content/themes/ on your server. Create a new folder with a name that identifies it as a child theme. By convention, append -child to the parent theme’s folder name. For example, if your parent theme folder is astra, name the child theme folder astra-child.

The folder name must be all lowercase with no spaces. Hyphens are fine.

Step 2: Create style.css

Inside your new child theme folder, create a file called style.css. This file must contain a specific header comment that tells WordPress this is a child theme and which parent it inherits from. Here is the required format:

/*
 Theme Name:   Astra Child
 Theme URI:    https://example.com/astra-child/
 Description:  Astra Child Theme
 Author:        Your Name
 Author URI:   https://example.com
 Template:     astra
 Version:      1.0.0
 Text Domain:  astra-child
*/

The critical line is Template: astra. This must exactly match the folder name of the parent theme — not the theme’s display name, but the actual directory name. If the parent theme is in a folder called twentytwentyfive, then Template must read twentytwentyfive. Getting this wrong is one of the most common child theme pitfalls (more on that below).

You can add your custom CSS below this header comment block — it will be loaded after the parent theme’s styles.

Step 3: Create functions.php

In the same child theme folder, create a file called functions.php. The minimum required content for a properly functioning WordPress child theme is the parent stylesheet enqueue. Add the following:

<?php
add_action( 'wp_enqueue_scripts', 'my_child_theme_enqueue_styles' );
function my_child_theme_enqueue_styles() {
    wp_enqueue_style(
        'parent-style',
        get_template_directory_uri() . '/style.css'
    );
    wp_enqueue_style(
        'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        array( 'parent-style' )
    );
}

This code enqueues the parent theme’s stylesheet first, then the child theme’s stylesheet with the parent as a dependency. This ensures the correct load order — your child styles override the parent cleanly. Note: some modern themes (like Astra and Kadence) load their styles via PHP rather than style.css, in which case you may only need to enqueue the child style. Check your parent theme’s documentation.

Step 4: Activate the Child Theme

Log into your WordPress dashboard and go to Appearance → Themes. You should see your new WordPress child theme listed. Click Activate. Your site will look identical to before — the child theme inherits everything from the parent. You’re now ready to safely add customizations.

Method 2: Create a Child Theme with Child Theme Configurator

If you’d prefer not to manually create files, the Child Theme Configurator plugin by Lilaea Media is the most reliable tool for the job. It’s actively maintained, free on WordPress.org, and has over 700,000 active installations as of 2026.

Step 1: Install Child Theme Configurator

Go to Plugins → Add New and search for “Child Theme Configurator”. Install and activate the plugin by Lilaea Media.

Step 2: Configure the Child Theme

Navigate to Tools → Child Themes. In the “Parent Theme” dropdown, select the theme you want to create a child of. The plugin will automatically detect all installed themes.

Key settings to review:

  • Child Theme Directory: The plugin will suggest a name (e.g., parenttheme-child). You can change this.
  • Stylesheet handling: Choose whether to use @import or enqueue. The enqueue method (wp_enqueue_scripts) is recommended for 2026 — @import is slower and deprecated in some contexts.
  • Copy menus, widgets, and other settings: Check this if you want your current Customizer settings preserved in the child theme.

Step 3: Create and Activate

Click Create New Child Theme. The plugin generates the folder, style.css, and functions.php automatically, then gives you the option to activate immediately. This is the fastest path to a properly configured WordPress child theme.

Method 3: Child Themes for Block (FSE) Themes in 2026

With the Full Site Editor (FSE) now stable in WordPress 6.x, block themes like Twenty Twenty-Five (the current default) use a different architecture. Instead of PHP templates, they use HTML block templates and theme.json for design tokens. Creating a WordPress child theme for a block theme follows the same basic principle — but with some differences.

How Block Theme Child Themes Work

For a block theme child theme:

  • The style.css header is still required with the correct Template value
  • You do not need to enqueue the parent stylesheet via functions.php — block themes handle style loading differently
  • To override design tokens (colors, typography, spacing), create a theme.json file in your child theme. WordPress merges child theme.json settings on top of the parent’s
  • To override a block template, copy it from the parent’s /templates/ folder into a /templates/ folder in your child theme and modify it
  • To override template parts (header, footer), copy them from /parts/ into your child’s /parts/ directory

Example: Override Colors via theme.json in a Child Theme

Create a theme.json file in your child theme folder with just the properties you want to override:

{
  "$schema": "https://schemas.wp.org/trunk/theme.json",
  "version": 3,
  "settings": {
    "color": {
      "palette": [
        {
          "name": "Primary",
          "slug": "primary",
          "color": "#1a73e8"
        }
      ]
    }
  }
}

WordPress will merge this with the parent’s theme.json, so you only need to specify what you’re changing. This is the cleanest way to customize block themes safely in 2026. For more on theme customization, see our guide on how to change your WordPress theme.

Common WordPress Child Theme Pitfalls (And How to Avoid Them)

Even experienced developers make these mistakes when creating a WordPress child theme. Here’s what to watch for:

1. Wrong Directory in the Template Header

The Template: line in style.css must match the parent theme’s folder name, not its display name. The theme “Astra” lives in a folder called astra. If you write Template: Astra (with a capital A), WordPress cannot find the parent and will display an error. Always check the exact folder name in wp-content/themes/.

2. Missing functions.php or Incorrect Enqueue

Without functions.php or without the enqueue hook, the parent stylesheet doesn’t load. Your child theme will display with zero styling — a completely broken layout. Always include the enqueue function shown in Method 1 Step 3, or use the Child Theme Configurator plugin which handles this automatically.

3. Placing the Child Theme in the Wrong Directory

The child theme folder must be inside wp-content/themes/ — not inside the parent theme’s folder. It should sit at the same level as the parent, not inside it. For example: wp-content/themes/astra/ and wp-content/themes/astra-child/ should both be direct children of the themes directory.

4. Not Using a Child Theme on a Live Site

Some users set up a WordPress child theme on a staging environment but forget to activate it on the live site before making customizations. Always confirm which theme is active in Appearance → Themes on both environments. If you need a reliable staging environment built into your hosting, consider managed WordPress hosting with one-click staging.

5. Copying Entire Parent Theme Files Unnecessarily

Some users copy every parent template file into the child theme “just in case.” This defeats the purpose — you lose the benefit of parent theme updates because your copies never update. Only copy a file to the child theme when you specifically need to modify it.

Frequently Asked Questions

Does a WordPress child theme slow down my site?

No. A properly built WordPress child theme adds negligible overhead — typically an extra HTTP request for the child stylesheet, which is tiny. The performance impact is imperceptible to visitors. The right hosting environment with LiteSpeed caching will deliver identical speeds with or without a child theme.

Can I use a child theme with Elementor or other page builders?

Yes. Elementor, Beaver Builder, Divi, and most page builders work perfectly with child themes. In fact, it’s best practice to use a child theme even when building with a page builder, so your PHP customizations and any non-builder theme modifications are protected from updates. For Elementor-specific guidance, see our Elementor tutorial.

What’s the difference between a child theme and a starter theme?

A child theme inherits from an existing theme and is designed to customize it. A starter theme (like Underscores or GeneratePress’s blank child) is a minimal, bare-bones theme intended as a starting point for building a completely custom theme from scratch. Use a child theme when you like your parent theme and want to extend it; use a starter theme when you’re building something entirely new.

Do I need a child theme if I only use the WordPress Customizer?

Customizer settings (colors, fonts, widget placements set via the WordPress Customizer) are stored in the database, not in theme files — so they survive theme updates without a child theme. However, if you add custom CSS via the Customizer’s “Additional CSS” box, or if you ever plan to modify PHP template files, a child theme is essential.

Can I create a child theme of a child theme?

No. WordPress does not support grandchild themes (a child of a child). If you need to extend a child theme further, add your additional customizations to the existing child theme’s files.

Ready to Upgrade Your Website?

If you’re looking for fast WordPress hosting and done-for-you updates, check out our hosting packages by clicking the button below. With managed WordPress hosting from GigaPress, your child theme customizations are protected by daily automated backups — so even if something goes wrong, you can restore in seconds.

Similar Posts