So you finally found that big complex theme to use, but you want to make some changes here and there, and customize it a little.  That is all fine, but did you know that a lot of themes become outdated over time and may not function properly unless they are kept up to date?  Well, they do because WordPress is always getting new updates (which are really easy to install).  I always recommend keeping everything up to date with WordPress.
If you spent a lot of time and/or money investing in changing your WordPress Theme, you don’t want to lose those changes, so the best way to keep your changes, and still be able to update your theme, is to use whats called a Child Theme.  A Child Theme is a separate theme from the original (Parent) Theme, but actually uses the files from the Parent Theme to make the whole thing work.

There is an easy way to setup a Child Theme.  One example of a theme a lot of friends of mine use is called Optimize Press.  Unlike Genesis, there is not a Child Theme that comes with the package, so we would have to make one.  Its fairly simple to get one started.  All you do is open up a program called “notepad” and type in some code for the CSS Stylesheet (using guidelines set by WordPress.org Codex).  A sample of this would like like this:

child_css

As you can see, there is not much here.  Once you have this file completed, you can put it in a folder (in this example it would be sealight-child as the forlder name, then put it in a zip file to install it through the WordPress Theme Dashboard, or to upload with FTP, simply create a new folder and upload the stylesheet.  Then, all you have to do is “activate” the theme, and your ready. Any file from the Parent Theme directory that you include in your Child Theme will override the Parent Theme files with the same name.  For example, if you wanted to edit the header.php or footer.php all you have to do is copy them to the child theme and then go to the editor under Appearance in the WordPress Dashboard to edit them.  

The same holds true for folders, and the files within them.  Adding a folder with the same name won’t replace that folder, but if you change images and php files and include them in that folder they will be changed on the theme.  So, if your parent theme has a folder called “img” that includes your theme template images, you can make a new folder called “img” in your Child Theme and include any additional files in there.  If you include an image file with the same name as an image file that exists in the Parent Theme, then the Child Theme File will replace the Parent Theme File.

The only file that I know of that doesn’t work that way is the functions.php file.  Copying over a function and changing it, will not get rid of the function. You have to put in some code to remove the function you don’t want, and then add the new one.  The functions.php file in a Child Theme is basically combined with the one in the Parent Theme.  So, you can easily add functions.

Using a child theme will help keep all of your changes in one place, so in this example, if I were to update the Sealight theme from WooThemes, all I would need to do is:

  • temporarily activate a different theme
  • delete the main Sealight theme (leaving the child theme installed, but inactive)
  • install the updated Sealight theme
  • re-activate the Sealight Child theme

Thats really all there is to it.  If you have already made changes to your premium theme, its not to late.  You can still create a child theme, but you’ll have to remember all the changes you made, and next time you update the theme you might find a couple of your revisions removed if you forgot about one or two (which hopefully can be added back in).

A note on Theme Options:

Before deactivating a Child Theme to update the parent theme (In the example above, the parent theme is “Sealight” and the child theme is “Sealight-child” you will want to backup your theme options panel. This will include all your options which can be restored at a later time if you need to. Since there are so many different frameworks (woothemes, genesis, and others), you will want to refer to your Theme Documentation prior to backing up.