REIGN

22 min read · 4,383 words

Reign Child Theme: How to Customise Without Losing Your Changes on Update

Reign featured image: a child theme keeps your code and template overrides safe through parent theme updates

A Reign child theme is a small separate theme that sits on top of Reign and holds your own code, so a Reign update cannot overwrite it. You need one when you edit templates, add PHP or write more than a few lines of CSS. For colours, fonts, layouts and a handful of CSS rules, the Customizer is enough and no child theme is needed. This guide shows both paths, with safe code you can copy.

Reign details here come from the theme’s own documentation and the official WordPress Child Themes handbook, checked in October 2026.

In this guide

  • What a child theme is, and why Reign sites use one
  • When you need a child theme and when the Customizer is enough
  • How to get and activate the Reign child theme
  • What style.css and functions.php do
  • How to enqueue styles correctly
  • How to override templates, including the template hierarchy
  • How BuddyPress and BuddyNext templates fit in
  • How to test before going live
  • What happens on updates
  • Mistakes that break child themes
  • Questions people ask

What is a Reign child theme, and why use one?

A child theme is a theme that declares another theme as its parent and loads on top of it. WordPress uses the parent for everything the child does not replace. The official handbook says a child theme extends the parent without changing the parent’s files, so your changes survive parent updates.

The theme’s own documentation makes the same point in blunt terms. Edits made directly inside the reign-theme folder are overwritten on the next Reign update, with no warning. A child theme is a separate directory, so your changes persist.

That matters more on a community site than on a brochure site. A community has member screens, directories, login pages and often a shop or courses, and each can tempt you into editing a template.

One thing a child theme does not touch is your settings. Reign states that Customizer and Reign Settings choices are stored in the database, so updates do not affect them. Your colours, header layout and typography are safe either way. The child theme protects code, meaning files you write or copy.

Reign also documents an official child theme package, which we cover below. If you have not set the theme up yet, start with how to install Reign and import a demo and come back.

Do I need a child theme, or will the Customizer do?

You need a child theme only when you change files or add real PHP. Anything that is a setting, a colour, a font or a short CSS rule belongs in Reign Settings, the Customizer or Additional CSS. Using the lightest tool that works keeps your site easier to maintain.

Here is how the options compare, using what the theme’s documentation says about each one.

What you want to changeBest placeWhy
Colours, typography, header layout, footer, dark modeReign Settings and the CustomizerStored in the database, so updates do not affect them
A few quick CSS rulesAppearance > Customize > Additional CSSLoads after the theme’s compiled CSS, so your rules win at equal specificity
Analytics, a pixel, a verification tag, a small scriptCustomizer > General > Custom CodeThree fields: Tracking Code, Custom JS Header, Custom JS Footer
A lot of CSS, or CSS you want under version controlChild theme style.cssLives in a file you can back up and track
PHP: hooks, filters, shortcodesChild theme functions.phpCustom Code has no PHP field
Changing the HTML a page outputsChild theme template overrideWordPress uses the child’s copy of a file before the parent’s

A rule of thumb that works well: if you can do it by clicking, do it by clicking. If you would otherwise open a file in reign-theme, stop and use a child theme.

The theme’s documentation draws one more line worth copying. Use Custom Code for small, site-wide snippets that a non-developer site owner should be able to find and edit later from the Customizer. If a snippet has real logic, conditions or more than a few lines, move it to the child theme. For heavy tracking setups the docs recommend a dedicated tag manager, and if you use one you should leave the Custom Code fields empty.

For the no-code settings, our Reign customization guide for colours, typography and layout goes through each screen. If you build pages with a page builder, customizing Reign with Elementor covers that route, and neither of them needs a child theme.

How do I get and activate the Reign child theme?

Download it from Reign Settings, upload it like any theme and activate it. Reign documents a starter package for this, so you do not have to write the files yourself. It is a starter, not a copy of your current settings.

Step 1: Download the package

Go to Reign Settings > Tools. In the Child theme card, click Download child theme. You get a file called reign-child-theme.zip. the theme’s docs also point to the wbcomdesigns/reign-child-theme releases page on GitHub as an alternative source.

To confirm it worked, check that the zip contains four files: style.css, functions.php, readme.txt and screenshot.png.

Step 2: Take a backup, then upload it

Back up your database and files first. It is a habit worth keeping even for a change this small. Then go to Appearance > Themes > Add New > Upload Theme, choose the zip and install it.

To confirm it worked, look for the theme named REIGN Child in Appearance > Themes.

Step 3: Activate it

Click Activate. WordPress redirects you to Reign Settings, and your settings are copied into the child theme, so the site looks the same as before.

To confirm it worked, open Reign Settings > Home. The Child theme step should read “Your code changes survive updates.” Then open Reign Settings > Tools and check that Child theme shows Yes. The Tools screen also has a System status card that lists whether a child theme is active, along with your PHP, WordPress and Reign versions. Keep that card handy for support tickets.

Two warnings from the docs

Keep the theme name as “REIGN Child”. Reign recognises its official child theme by the Theme Name line in style.css, and it copies settings only when the name matches. If you want a different name, test the rename on a staging copy first.

Also note that Customizer changes you make while the child theme is active are saved back to Reign as well. Switching themes later will not lose them.

What do style.css and functions.php do in a child theme?

The style.css file identifies the theme and holds your CSS. The functions.php file loads your styles in the right order and holds your PHP. Those two files are the whole of a basic child theme.

The handbook calls style.css the only file a child theme strictly requires. At the top it needs a header comment with the usual theme fields plus a Template line. The Template value must be a 100% match of the parent’s folder name, which for Reign is reign-theme.

The Reign package already contains a correct header. You would write one yourself only if you build a child theme from scratch, so treat the next sample as a reference.

Sample: a minimal style.css header (from-scratch child themes only)

/*
 Theme Name:   My Site Child
 Template:     reign-theme
 Version:      1.0.0
 Description:  Custom code for my community site.
 Text Domain:  my-site-child
*/

/* Your CSS goes below this line. */

If you use the official package, do not replace its header with this one. The official header keeps the name “REIGN Child” so that Reign can recognise it.

For functions.php, the handbook explains an important difference from templates. A child’s functions file does not replace the parent’s. Both files load, and the child’s loads immediately before the parent’s. So you add your own functions to the child, and you never copy functions out of the parent, because duplicate function names cause fatal errors.

In the Reign package, functions.php loads your CSS in order, keeps settings in sync and has a marked spot for your PHP. The docs say to add hook callbacks, filters and shortcodes at the end of the file, below that marked line.

Here is a safe PHP example. It changes the excerpt length with a standard WordPress filter. It is a sample of the pattern, so change the number or swap in your own hook.

Sample: your own PHP in the child theme functions.php (add below the marked line)

add_filter( 'excerpt_length', 'mysite_child_excerpt_length', 99 );

/**
 * Show 30 words in excerpts.
 *
 * @param int $length Default excerpt length.
 * @return int
 */
function mysite_child_excerpt_length( $length ) {
	return 30;
}

Two details in that sample are deliberate. The function name starts with a prefix that is unique to your site, which prevents clashes with the parent or a plugin. And the priority is 99. Because the child’s functions file loads just before the parent’s, a parent that hooks the same filter at the default priority would run after yours and could undo your change. A higher priority number runs later, so yours gets the last word.

To confirm it worked, view a blog archive that prints excerpts and count the words. Then remove the sample if you do not want that behaviour.

How do I enqueue child theme styles correctly?

With the official Reign child theme, you do nothing: its functions.php already loads your CSS in order. If you write the child theme from scratch, enqueue your stylesheet after Reign’s and list the parent’s handles as dependencies.

“Enqueue” is WordPress’s word for registering a stylesheet so it prints in the page head in a controlled order. The handbook says to do it on the wp_enqueue_scripts hook, and it warns that you must first check what the parent already loads. Some parents load both stylesheets, some load neither. If you load a file twice, or in the wrong order, rules clash.

The theme’s documentation gives the specifics for this theme. Reign enqueues its styles at priority 5001. With Smart Performance turned on, it also adds a stylesheet with the handle reign-critical. Your stylesheet should enqueue after Reign, and the docs use priority 6000 in their example. It should depend on reign_main_style and reign-critical when they are queued. Only list handles that are actually enqueued, because WordPress silently drops a stylesheet whose dependency is missing.

That last sentence is the one that trips people up. The page looks fine in development and then loses all your CSS the day you switch a setting that removes a handle. The sample below avoids that by checking each handle before listing it.

Sample: enqueue your child stylesheet safely (from-scratch child themes only)

add_action( 'wp_enqueue_scripts', 'mysite_child_enqueue_styles', 6000 );

/**
 * Load the child stylesheet after the parent's styles.
 */
function mysite_child_enqueue_styles() {
	$deps = array();

	// Only depend on handles that are really enqueued.
	foreach ( array( 'reign_main_style', 'reign-critical' ) as $handle ) {
		if ( wp_style_is( $handle, 'enqueued' ) ) {
			$deps[] = $handle;
		}
	}

	wp_enqueue_style(
		'mysite-child-style',
		get_stylesheet_uri(),
		$deps,
		wp_get_theme()->get( 'Version' )
	);
}

The function get_stylesheet_uri() returns the active theme’s style.css, which is the child’s. The version argument adds a cache-busting number, so visitors get your new CSS after you bump the version in the header.

Do not paste this sample into the official Reign child theme. That package already enqueues its CSS, and a second copy loads the stylesheet twice.

To confirm it worked, open the site, view the page source and search for your stylesheet name. It should appear once, after the Reign stylesheets.

Writing the CSS itself

In the official child theme, add rules at the end of style.css. The docs say it loads after all Reign stylesheets, so your rules win at equal specificity, and changes appear immediately. For only a few rules, Appearance > Customize > Additional CSS is quicker.

Find your selectors with your browser’s inspector rather than guessing class names. Right-click the element, choose Inspect, and copy the class you see.

Sample: CSS patterns for the end of style.css

/* Visible keyboard focus on every link. */
a:focus-visible {
	outline: 3px solid currentColor;
	outline-offset: 2px;
}

/* Replace .your-selector with the class you found in the inspector. */
.your-selector {
	margin-block-end: 1.5rem;
}

@media (max-width: 640px) {
	.your-selector {
		margin-block-end: 1rem;
	}
}

Notice the mobile rule. Community sites get a large share of visits on phones, so write the small-screen version in the same edit. And if you use hard-coded colours, check them in dark mode. The docs say dark mode has its own colour set, so a colour that looks right in light mode can fail on a dark background. Our post on why dark mode matters for community sites covers the reasons it is worth supporting.

If a rule does not apply, look for a more specific selector in the theme’s CSS before reaching for !important. That advice comes straight from the Custom Code page, and it saves you from piling up overrides you cannot later undo.

How do I override a Reign template in a child theme?

Copy the template file into your child theme with the same name and path, then edit the copy. WordPress will use your copy instead of the parent’s. The parent file stays untouched, so updates cannot erase your edit.

The rule behind this is the template hierarchy. That is the ordered list of filenames WordPress checks to decide which template draws a given page. The handbook says WordPress searches down through the hierarchy until it finds a matching file, and that index.php is the final fallback. For a single post, the order runs from single-{post-type}-{slug}.php to single-{post-type}.php, then single.php, singular.php and index.php. For a page, it checks a custom page template, page-{slug}.php and page-{id}.php, then page.php, singular.php and index.php.

Two consequences follow from that. First, any file you add to the child overrides the same-named file in the parent. Second, a more specific template in the parent can still beat a general template in the child, because specificity is judged first. If you add a child page.php and nothing changes, check whether a more specific file such as page-{slug}.php is winning.

Core templates and template parts

The theme’s docs say it ships the top-level templates page.php, single.php, archive.php, index.php, search.php, author.php, 404.php and comments.php. Copying one into your child theme with the same filename makes WordPress use yours.

Most of the markup, though, sits in the template-parts/ folder, loaded with get_template_part(). That function also checks the child theme first. So you can override one small part, for example template-parts/content.php, without copying the full parent template that calls it.

Prefer the smallest override that does the job. A small copy is easy to compare against the parent after an update.

Sample: where override files go in the child theme

your-child-theme/
  style.css
  functions.php
  template-parts/
    content.php             overrides one part of the parent
  woocommerce/
    myaccount/
      navigation.php        overrides a WooCommerce template

The WooCommerce path in that tree is the example the theme’s docs use. To confirm an override is live, add a visible test line to your copy, such as an HTML comment, reload the page and view the source. Remove the line once you see it.

Plugin templates

the template-overrides page lists the folder names it expects for supported plugins. Each plugin checks the active theme for a folder matching its slug.

Folder in your child themePlugin it applies to
bp-nouveau/BuddyPress, when the BP Nouveau template pack is active
bb-buddypress/BuddyBoss Platform
bbpress/bbPress
woocommerce/WooCommerce
dokan/Dokan
learndash/LearnDash
lifterlms/LifterLMS
wc-vendors/WC Vendors
job_manager/WP Job Manager

For WooCommerce, Dokan, LearnDash, LifterLMS, WC Vendors and WP Job Manager, the child theme is checked before Reign. The overall precedence is simple. WordPress takes the child theme’s copy if it exists, then Reign’s copy in reign-theme, then the plugin’s own bundled template if Reign does not ship that file.

How do BuddyPress and BuddyNext template overrides work in a child theme?

For BuddyPress, put overrides in bp-nouveau/, not buddypress/. This is the exception on the template-overrides page, and it is the most common reason a BuddyPress child theme override seems to do nothing.

Normally BuddyPress looks for overrides in a folder called buddypress. Reign has no such directory. Instead, a filter on bp_get_template_stack in its functions.php rewrites that lookup. If BuddyBoss Platform is active, the entry becomes bb-buddypress. Otherwise it becomes bp-nouveau.

The result is that a file at your-child-theme/buddypress/members/single/home.php is never found, because the lookup is rewritten before it reaches the child theme. The working path is:

your-child-theme/bp-nouveau/members/single/home.php

On a BuddyBoss Platform site, use your-child-theme/bb-buddypress/... instead. Match the folder to the template pack the site really runs. If you are unsure which one that is, the theme’s docs suggest checking bp_get_theme_package_id().

To confirm a BuddyPress override is live, edit the copy visibly, then load a member profile as a logged-in member and view the source for your change.

What about BuddyNext?

the template-overrides page lists directories for BuddyPress and BuddyBoss Platform, and gives no BuddyNext path. So this guide does not invent one. BuddyNext is the Wbcom community plugin that powers the activity feed, Spaces, profiles and member directory, and it is built to be styled by Reign without add-ons. Before you copy any BuddyNext template, read its documentation, where the Developer Guide section covers hooks, blocks and the REST contract.

For most BuddyNext sites you will not need template copies at all. Colours, fonts and layout come from Reign Settings, and small visual tweaks fit in the child theme’s style.css. Reach for a template copy only when CSS cannot get you there. If you are still deciding which community engine to run, keep your Reign site and upgrade the community to BuddyNext explains the move, and migrating a BuddyPress community to BuddyNext covers the data side. Any BuddyPress template overrides you wrote will need a fresh look in that case, since they target a different plugin.

How do I test a child theme before it goes live?

Test on a staging copy of the site, as a logged-out visitor and as a logged-in member, on a phone-sized screen. A community site shows different pages to different people, so one quick look as the admin proves very little.

Work through this checklist after any change to the child theme.

  1. Use a staging site. A staging site is a private copy of your live site. Reign’s update docs recommend testing there first, especially on sites with add-ons or a community platform.
  2. Turn on debugging. In wp-config.php, set WP_DEBUG to true on staging only. A syntax slip in functions.php can produce a white screen, and debug output tells you the file and line.
  3. Check as a logged-out visitor. Use a private browser window. Visit the homepage, a blog post, an archive, the login page and a public member or group page.
  4. Check as a member. Log in with a normal member account, not an admin. Open a profile, the activity or feed screen, messages, and any page you overrode.
  5. Check on a phone. Use the device toolbar in your browser at about 390 pixels wide. Look for overflow, clipped buttons and menus that no longer open.
  6. Check dark mode. If your site offers it, flip it on and read every page you touched.
  7. Clear every cache. Purge the page cache plugin, then any host cache, then the CDN, then hard-reload. A private window helps, since a logged-in view can skip caches that visitors still get.

the troubleshooting page for changes that do not show lists causes in a useful order. Check that a Customizer change was actually published, clear caches, look for a more specific override, check Custom Code and Additional CSS for rules that beat your setting, make sure you edited the right content layout screen, and finally rule out a plugin by deactivating plugins on staging and switching them back on one at a time.

If you have command line access, run php -l functions.php before uploading. It reports a parse error without loading the site.

For the speed side of new CSS and scripts, see our Reign performance guide for community sites.

What happens to my child theme when Reign updates?

Your child theme stays as it is, and Reign’s files update underneath it. That is the point of the setup. The files in reign-theme change, while the files in your child theme do not.

the update documentation describes how this works. Updates appear on the standard WordPress Updates screen once your licence is active. Without a licence, no update notice appears, and you download a new zip and install it manually. If you run Reign add-ons, update them in the same session, since an add-on built for the previous major version can misbehave with the new one.

The documented routine before an update is short.

  1. Back up the database and files.
  2. Check for direct edits in reign-theme. They are overwritten with no recovery apart from your backup.
  3. Check child theme status under Reign Settings > Tools > System status. If it shows no child theme and you have customised files, move that work into a child theme first.
  4. Test on staging if you have it.
  5. Update from Dashboard > Updates or Appearance > Themes, then check the header, a member screen and a page with your main content type.

Your template overrides need attention after an update, even though the update does not erase them. A copied file is a snapshot of the parent file on the day you copied it. If the parent file later changes, your copy keeps the old markup. Usually that is fine. Occasionally the parent starts expecting a new variable or class, and your old copy lags behind.

So after each update, compare your overridden files with the parent versions and re-apply your edit on top of the new one if they diverged. The more small and targeted your overrides are, the shorter that comparison is.

If something looks wrong after an update, the documented rollback route is to reinstall the previous version with the older zip from your account, then open a support ticket with your System status. For a calmer overview of why updates are routine rather than risky on a Reign site, see why Reign makes WordPress updates easy.

A child theme only protects you while its parent is installed. If you plan to move to a different theme, read how to change your community theme without losing members or content first, because code in your child theme will not follow you.

What mistakes break a Reign child theme?

Most failures come from a short list: editing the parent, a wrong Template line, a renamed official child theme, duplicate enqueues, copying functions, and the wrong BuddyPress folder. Each one is easy to avoid once you know it.

  • Editing the parent “just this once”. The edit works until the next update and then vanishes. Make the change in the child.
  • A wrong Template line. The value has to match the parent’s folder name exactly, which is reign-theme. A typo means WordPress cannot find the parent and the theme will not run properly.
  • Renaming the official child theme. Reign recognises it by the Theme Name line and copies settings only when the name matches. Rename on staging first, or do not rename at all.
  • Enqueuing the stylesheet twice. The official package already enqueues its CSS. Adding the from-scratch sample on top doubles the load.
  • Listing dependency handles that are not queued. WordPress silently drops a stylesheet with a missing dependency, and your CSS disappears with no error message.
  • Copying parent functions into the child. Duplicate function names cause a fatal error. Add new functions instead, with your own prefix.
  • Using buddypress/ as the override folder. On Reign the lookup is rewritten, so use bp-nouveau/ or bb-buddypress/.
  • Forgetting caches. A page cache or CDN serving an old page is a common reason a child theme seems to do nothing.

Questions people ask

Is there a ready-made Reign child theme?

Yes. The documentation describes an official child theme you download from Reign Settings > Tools, as reign-child-theme.zip. It contains style.css, functions.php, a readme and a screenshot. It is a starter package and does not hold your current site’s settings, although those are copied across when you activate it.

Do I need a child theme for a BuddyPress or community site?

Only if you change files or write PHP. A BuddyPress child theme is the right home for template overrides in bp-nouveau/ or bb-buddypress/, and for custom hooks. Colours, fonts and layout for a community site live in Reign Settings and need no child theme. The same holds for the WordPress child theme for a community site in general: settings belong in settings, code belongs in the child.

Will a child theme slow my site down?

A child theme adds one stylesheet and one functions file, which is small. The bigger cost is what you put in them. Keep CSS lean, avoid loading scripts on pages that do not need them, and test again after you add anything large. We make no speed claims for a child theme itself.

Can I use Additional CSS and a child theme together?

Yes, and many sites do. The docs say Additional CSS loads after the theme’s compiled CSS. Use it for quick edits, and move anything long or permanent into the child’s style.css.

What happens if I delete the child theme?

The site falls back to whatever theme you activate next. If you switch back to Reign itself, your Customizer settings are still there because they are saved in the database, and Reign states that Customizer changes made while the child is active are saved back to it. Your child’s CSS, PHP and template overrides stop applying, so download a copy of the folder before you remove it.

Reign is the theme this whole guide builds on. It styles the community, courses, shop and directories from one set of settings, and a child theme gives you a safe place for the code those settings cannot reach. See the Reign theme page for features and demos, or open the BuddyNext live demo to click around a working community first. For ideas on what you can build once the foundation is safe, read what you can build with Reign, and if the job needs real custom work, price it against a ready theme before you hire a developer.

Reading
22 min · 4,383 words
Published
Oct 22, 2026
Shashank Dubey
Reign contributor

Writing about WordPress communities, BuddyPress, BuddyBoss, LMS plugins, and the business of paid communities.

Keep reading

More from the Reign blog

Browse all posts on community, WordPress, BuddyPress and the studio of plugins behind Reign.

What customers say on Trustpilot

Swift and expert coding!

Swift and expert coding by Kerit to apply a personalised display adjustment on the Reign Theme for a media plugin that was not fully supported at the moment.

RussellGB