How to Create a WordPress Child Theme for a Fan Site
You spent an evening tweaking your theme's header so the guild logo sits right and the patch notes widget matches your colours. Then a theme update arrived, you clicked the button, and every change vanished.

You spent an evening tweaking your theme's header so the guild logo sits right and the patch notes widget matches your colours. Then a theme update arrived, you clicked the button, and every change vanished. A WordPress child theme for a fan site exists to stop exactly that, and setting one up takes about 20 minutes if you know which files matter.
This guide walks through what a child theme is, how to build one by hand with two small files, what belongs in it, and when you should skip it entirely. I edit WordPress sites for a living, and the child theme is still the first thing I check when an admin tells me an update "broke the design".
What a WordPress child theme actually does
A child theme is a separate theme folder that borrows everything from a parent theme and overrides only the parts you change. WordPress loads the parent's templates and styles first, then applies whatever the child supplies on top. When the parent updates, its folder is replaced, but your child folder is left alone.
For a gaming community this matters more than for a typical blog. Fan sites tend to collect small custom touches: a tier list table style, a spoiler box, a modified single post template that shows the game version a guide was written for. Each of those lives in theme files, and each one is lost if you edited the parent directly.
There is a second benefit people overlook. Because your edits sit in one small folder, you can see at a glance everything you have customised. When a new moderator joins and asks why the archive page looks different from the theme demo, you can point at three files instead of guessing.
Build a child theme for your fan site in four steps
You need file access through your host's file manager or SFTP. A plugin can generate a child theme too, but doing it by hand once teaches you what is going on, and it adds nothing to your plugin count.
- Create the folder. Inside wp-content/themes, make a new folder named after the parent with "-child" on the end, for example astra-child or generatepress-child. Lowercase, no spaces.
- Add style.css. Create a file called style.css with a comment header at the top. The two lines that matter are Theme Name (anything readable, such as "Astra Child for Raid Hub") and Template, which must exactly match the parent's folder name. If Template is wrong, WordPress will report the theme as broken.
- Add functions.php. Create functions.php and enqueue the parent stylesheet, then the child stylesheet, using the wp_enqueue_scripts hook. Many modern themes already load their own styles correctly, so check the parent's documentation; some only need the child stylesheet enqueued.
- Activate and check. Go to Appearance, then Themes, and activate the child. Open your homepage, a single guide, and a category archive. They should look identical to before. If something looks unstyled, the stylesheet order in functions.php is the usual culprit.
One warning before you activate: menus and widget placements are stored per theme in some setups. On a site with a busy sidebar of Discord embeds and server status widgets, note where everything sits first. Re-placing ten widgets takes five minutes when you have a screenshot and half an hour when you do not.
Test on a copy first if you can. A staging copy of the site is ideal for this, and switching themes on a live site during a game launch weekend is a bad idea.
What belongs in the child theme and what does not
A child theme is for presentation. That rule clears up most confusion.
| Change | Put it in the child theme? | Why |
|---|---|---|
| CSS for spoiler boxes, tier tables, colours | Yes | Pure styling tied to this design |
| Modified single.php to show game version | Yes | Template override of the parent |
| Custom post type for patch notes | No | Content would disappear if you change themes |
| Shortcodes used inside guides | No | Old posts would show raw shortcode text after a theme switch |
| Google Fonts swap or font loading | Usually yes | Visual, tied to the design |
Anything that creates or shapes content, such as custom post types, taxonomies for platforms, or shortcodes, should live in a small site-specific plugin instead. If you ever move to a new theme, your 300 boss guides keep working.
To override a template, copy the file from the parent into the child with the same path. If the parent keeps it at template-parts/content-single.php, the copy goes to the same relative path in the child. Copy only the files you change. Every copied template is a file you now maintain, and if the parent fixes a bug in that template later, your copy will not get the fix.
The common advice to always use a child theme is outdated
Many tutorials still say every WordPress site must run a child theme. That was true when nearly all themes were classic PHP themes and the Customizer was limited. It is less true now.
If you use a block theme with the Site Editor, your template and style changes are saved in the database, not in the theme files. A parent update does not wipe them. Adding a child theme on top gives you very little and adds a layer that confuses people later. The same goes for small CSS tweaks: the Additional CSS panel in the Customizer, or the Styles panel in a block theme, survives updates and needs no files.
My working rule after auditing dozens of community sites: use a child theme when you edit PHP templates or functions, or when your CSS runs past roughly 150 lines and deserves version control. Skip it when your only changes are a few colours and a spacing fix. A child theme you do not need is one more thing to explain to the next admin.
Keeping a child theme healthy over time
A child theme is not set and forget. Three habits keep it from becoming the thing that breaks your site.
- Read the parent changelog. If an update mentions changes to a template you have overridden, compare your copy against the new version and merge the fix.
- Keep a short notes file. A plain text file in the child folder listing each override and why it exists saves hours when someone else takes over.
- Watch performance after changes. Extra stylesheets and fonts add requests. If the site suddenly feels sluggish, our guide on why a site feels slow right after a theme update covers how to trace it.
Before any edit, make sure your backups include the themes folder, not only the database. Plenty of backup setups skip theme files by default, and your child theme is the one piece you cannot redownload. See WordPress backups for a fan site that actually restore for a setup that covers it.
Frequently asked questions
Does a child theme slow down WordPress?
Barely. A child theme adds one stylesheet request and a tiny functions file, which is usually a few kilobytes. The real slowdowns come from heavy fonts or large scripts you add to it, not from the child theme itself.
Can I add a child theme to a site that is already live?
Yes. Create the child, then copy any edits you made to the parent into it before activating. Check menus and widgets after switching, since some themes store those settings per theme. Doing this on a staging copy first is safer.
Do block themes need a child theme?
Usually not. Changes made in the Site Editor are stored in the database and survive parent updates. A child block theme only makes sense if you want to ship custom templates or patterns as files you can version and reuse.
More in WordPress
WordPress
WordPress Database Cleanup for a Busy Gaming Fan Site
Your fan site has run for three years, the admin dashboard takes six seconds to load, and the hosting panel says the database...
WordPress
Stopping Brute Force Logins on a WordPress Guild Site
The first time I opened the access log of a small guild site I help run, I counted 4,200 requests to wp-login.php in a single...
WordPress
WordPress Plugin Audit for a Clan Site Running 40 Plugins
A guild site I helped clean up last year had 43 active plugins. The admins could name maybe 15 of them.