WordPress child theme allows you change the functionality of the theme without having to edit the original/parent theme template files. If you need to modify any template file, we recommend to create a child theme instead of editing the theme template files. Since the child theme is stored separately, you don't need to redo the changes next time you upgrade the theme. Coding child themes requires some basic computer skills (ie. creating PHP files, uploading files, and modifying code).
How Child Theme Works
Basically once the child theme is activated, WordPress will look for the template files in the child theme folder first. If the file doesn't exist in the child theme, it will fallback to the parent theme folder. In other words, if there is a "header.php" in the child theme, WordPress will use that "header.php", else it will use the "header.php" file in the parent theme.
Creating a Child Theme
- To start a child theme: on your computer desktop, create a new folder (eg. "themify-ultra-child")
- In the child theme folder, create a new CSS file in the child theme folder and name it style.css.
- Paste the sample code below in the style.css file and change the theme name and template name as instructed below.
/* Theme Name: Themify Ultra Child Description: Child theme for Themify Ultra Author: Themify Template: themify-ultra */ /* write custom css below */
- Theme Name (required) = use the parent theme name + child to make it easy to identify (eg. "Themify Ultra Child")
- Description (optional)= you may enter any text here
- Author (optional) = your name
- Template (required) = name of the parent theme folder (in this case, it is "themify-ultra")
- Then you may add any additional custom CSS as you want in the child theme style.css (optional).
- Once you have the child theme done, zip it (eg. it should be compressed as "themify-ultra-child.zip")
- Login to your WP Admin, then go to Appearance > Theme, install the child theme zip (the same way as installing a WordPress theme), and then activate it.
- NOTE: Make sure the parent theme is installed (ie. if the parent theme is "Themify Ultra", make sure it is installed in your WordPress site).
You may download a sample themify-ultra-child.zip theme as a child theme starter. If your parent theme is not Ultra, then extract the child theme zip and change the "Theme Name" and "Template" in the style.css file.
Child Theme functions.php File
If you need to add custom PHP functions, create a 'functions.php' file and store it in the child theme folder. You only need to create the functions.php file if you need to add or modify the theme functions such as enqueuing/dequeuing scripts.
Overriding template files is intended for developers who have PHP and WordPress coding knowledge. It is only required if you need to override the parent theme template files. If you are not sure how to do this, consult a developer.
To override the template files in the parent theme, open the original template file and save a copy to the child theme folder with same file name and folder structure. Basically, the file structure has to match with the parent theme.
- let's say you want to edit the loop.php file in the parent theme and it is stored in the "includes" folder
- open the loop.php file and save a copy in the "includes" folder of the child theme
- edit and save the loop.php in the child theme
- let's say you want to edit the page.php
- open the page.php file and save a copy in the child theme
- edit and save the page.php in the child theme
How Customize Data Works
Note Customize data is associated to the activated theme (ie. when you switch to another theme, the Customize options will be different). To carry the Customize data from one Themify theme to another Themify theme, use the Customize's Export and Import feature located on the Customize panel).
Also note that the activated child theme is considered as a separate theme. If you see your Customize data is gone after activating a child theme, don't panic. Simply export the Customize data with the parent theme activated, then switch to the child theme and import the Customize data.