Parent theme updates overwrite direct edits—that's why child themes exist. If you've outgrown the Customizer but aren't ready for a full block theme rebuild, a child theme is the standard WordPress path for safe CSS and template tweaks.
When you need a child theme
- Custom CSS beyond Additional CSS limits
- Modified header.php, footer.php, or functions.php
- New template files for custom page layouts
- Enqueue scripts styles without a functions.php hack in parent
Create the folder structure
- Create
/wp-content/themes/yourparent-child/ - Add
style.csswith required headers:
/*
Theme Name: YourParent Child
Template: yourparent
Version: 1.0
*/
The Template value must match the parent folder name exactly.
Enqueue parent and child styles
Add to child theme functions.php:
add_action('wp_enqueue_scripts', function () {
wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
wp_enqueue_style('child-style', get_stylesheet_uri(), ['parent-style']);
});
Copy only files you change
WordPress falls back to parent templates for files absent in the child. Copy header.php only if you're editing header markup—don't duplicate the entire theme.
Block themes (FSE) note
Full Site Editing themes use theme.json and template parts in the database. Child themes still work—create child theme.json with version and template reference—but workflow differs from classic PHP themes.
Testing before production
Activate child theme on local or staging. Click through archives, single posts, and mobile menu. Switch back to parent instantly if something breaks—child themes are reversible.
Common mistakes
- Wrong Template folder name—child won't activate
- Editing parent after copying—updates overwrite parent, not your child copy
- Duplicating entire theme—update nightmares
Documentation habit
Keep a CHANGELOG in the child folder noting every custom file and why. Future you—and AdSense reviewers seeing a maintained site—both benefit.