---
title: Child themes
description: When you need a child theme, how to make one for Cartavera, and what it can override.
url: "https://wpruby.com/knowledgebase/cartavera-child-themes/"
updated: "2026-11-04"
category: WPRuby Themes / Cartavera
---

# Child themes

Table of Contents

 [Toggle](#)

- [Do you need one?](#Do_you_need_one)
- [Get the ready-made child theme](#Get_the_ready-made_child_theme)
- [Create a child theme by hand](#Create_a_child_theme_by_hand)
- [What the child theme can change](#What_the_child_theme_can_change)
- [Things to know](#Things_to_know)

## Do you need one?

Usually not. Changes you make in the Site Editor (styles, templates, headers, footers) are saved in your site's database, not in the theme's files, so theme updates don't overwrite them.

A child theme is worth it when you want to:

- keep custom CSS, templates or patterns in files, under version control
- add PHP: filters from the [hooks reference](https://wpruby.com/knowledgebase/cartavera-hooks/), your own patterns or block styles
- ship the same customizations to several sites

For PHP alone, a [small plugin](https://wpruby.com/knowledgebase/cartavera-hooks/#where-to-put-this-code) works just as well and doesn't depend on the theme.

## Get the ready-made child theme

Download **`cartavera-child.zip`** from your wpruby.com account, next to the Cartavera download. Keep Cartavera installed, then upload the child theme under **Appearance → Themes → Add New → Upload Theme** and activate **Cartavera Child**.

It contains exactly the files described below: `style.css`, a `functions.php` that loads it after Cartavera's styles, an empty `theme.json`, and a screenshot. Start adding your changes from there.

## Create a child theme by hand

If you'd rather build it yourself:

1. Make a folder `wp-content/themes/cartavera-child`.
2. Add `style.css`:

```
/*
Theme Name: Cartavera Child
Template: cartavera
Version: 1.0.0
Text Domain: cartavera-child
*/
```

`Template` must match the folder name of the parent theme, `cartavera`.

1. Add `functions.php`:

```
<?php
defined( 'ABSPATH' ) || exit;

// Cartavera loads its own styles; load the child's stylesheet after them.
add_action( 'wp_enqueue_scripts', function () {
	wp_enqueue_style(
		'cartavera-child',
		get_stylesheet_uri(),
		array( 'cartavera-theme' ),
		wp_get_theme()->get( 'Version' )
	);
} );
```

1. Add `theme.json` (it can start almost empty):

```
{
	"$schema": "https://schemas.wp.org/wp/6.7/theme.json",
	"version": 3
}
```

1. Zip the folder (or upload it by FTP) and activate **Cartavera Child** under **Appearance → Themes**. Keep Cartavera installed: the child theme needs it.

## What the child theme can change

| To change | Add to the child theme | How it works |
| --- | --- | --- |
| Colours, fonts, spacing, layout | `theme.json` | Merged with Cartavera's: list only what you change |
| A template | `templates/<name>.html` (same name as Cartavera's, for example `single-product.html`) | Replaces Cartavera's copy |
| The header or footer | `parts/header.html`, `parts/footer.html` | Replaces Cartavera's copy |
| New patterns | `patterns/<name>.php` with a pattern header | Registered automatically, next to Cartavera's |
| CSS | `style.css` (with the `functions.php` above) | Loaded after Cartavera's styles |
| Behaviour | `functions.php` | Runs before Cartavera's `functions.php` |

For example, to make buttons rounder and the accent colour a deep green, the child's `theme.json` only needs:

```
{
	"$schema": "https://schemas.wp.org/wp/6.7/theme.json",
	"version": 3,
	"settings": {
		"color": {
			"palette": [
				{ "slug": "accent", "color": "#1f7a4d", "name": "Accent" }
			]
		}
	}
}
```

Be careful with the palette: a `palette` in the child replaces the parent's whole palette, so copy all of Cartavera's colours from its `theme.json` and change the ones you need. Check contrast for any colour you change; see [Styles](https://wpruby.com/knowledgebase/cartavera-styles/#style-variations).

## Things to know

- **Copy, then change.** To override a template, copy it from Cartavera's `templates/` folder and change the copy. Cartavera's templates hold no text of their own: they reference patterns (``). Keep those references and your template stays translatable; see [Translation](https://wpruby.com/knowledgebase/cartavera-translation/#text-in-templates).
- **Site Editor changes still win.** A template or part you've edited and saved in the Site Editor is stored in the database and is used instead of both the parent's and the child's file. Reset it (⋮ → **Reset**) to use the file.
- **Updates and the licence stay with Cartavera.** Activate your licence under **Appearance → Cartavera** as usual. Cartavera itself keeps getting updates while the child theme is active, and your child theme's files are never touched by them.
- **Style variations:** Cartavera's style variations are still offered with a child theme active. A child theme can add its own in a `styles/` folder.
- **Use your own prefix** for functions and pattern slugs (for example `cartavera-child/…`), so they never clash with Cartavera's.
