Interested in Genesis child theme development – either creating a theme from scratch or modifying an existing Genesis theme? This post is for you.
Note there are affiliate links in this post. Here’s my full disclosure.
An Overview of Frameworks, Parent Themes, and Child Themes
Let’s start by taking a moment to get on the same page about what a WordPress theme framework is and where the Genesis Framework falls into that definition.
The WordPress Codex (basically the bible of WordPress), defines theme frameworks in one of three ways:
- A “drop-in” code library used to facilitate development of a theme
- A stand-alone base/starter theme that is intended either to be forked into another theme
- A parent theme template
The Genesis Framework falls into the third category and is meant to serve as a parent theme.
In practical terms, this means that if you have a WordPress site with the Genesis Framework installed, then any Genesis child theme you activate will inherit all the functionality of the Framework (a.k.a, the parent theme).
The benefit of this structure is that you never need to directly edit files in the Genesis Framework, which leaves it safe to update.
Instead, you make customizations via a child theme, which you should never update.
To summarize, in the WordPress world, if you want to change the parent theme, edit the child.
What About a Grandchild Theme?
So, how does this structure translate to the Genesis Framework where, by default, you’re already working with a child theme? Do you then change the child theme by creating and editing a grandchild?
No. While technically possible, you’ll be hard-pressed to find support for a grandchild theme. As an alternative solution, I recommend treating the child theme as unique and making your customizations directly.
Take an existing child theme for Genesis and make it your own
Now with that bit of preamble, here’s the question that originally inspired this post:
I use Genesis as a framework, and I typically modify a child theme quite heavily. At what point can I call it my own? Do I have to create my own child theme completely from scratch to call it my own and list myself as an author on the stylesheet and reference it as custom in my contract?
If you’re new to child theming, I recommend starting with an existing Genesis child theme and editing it to make it your own. What does it mean to make a theme your own? Let’s take a look at an example.
Let’s say I’m starting a new web project for a counseling group called Smart Passive-Aggressive.
There are some great mobile-friendly Genesis child themes, but I’m drawn to the Smart Passive Income Pro theme. I’ll use that as my starting point. I swear this has nothing to do with the amazing name similarity. Rather, the design of the theme is similar to what I want my finished theme to look like, so it makes sense to start with the SPI Pro theme as a base.
Before I make any customizations to the theme, there’re four things I need to do to make this theme unique.
1. Rename the child theme and move the theme folder
When you buy a theme, it’s typically available for download as a zip file from StudioPress or whatever third-party vendor you purchased from. I like to store this zip in an “original copies” folder on my machine along with other fresh downloads.
From there, I’ll unzip the theme (leaving the original zip as is) and rename the unzipped folder to match my new theme name.
In this example, I’ll rename the smart-passive-income-pro
folder to smart-passive-aggressive
.
Then, I’ll move the theme folder over to my local WordPress install theme folder (wp-content/themes/
) and place the smart-passive-aggressive
folder under version control.
2. Change the theme name in style.css
If I open up the style.css
file in the smart-passive-aggressive
theme folder, there’s a documentation block (a.k.a. “doc block”) at the top of the file that shows the theme name along with some other details.
/* Theme Name: Smart Passive Income Pro Theme URI: http://my.studiopress.com/themes/smart-passive-income/ Description: With its friendly typography and bold design, Smart Passive Income Pro gives a welcoming and familiar face to your online platform. Author: StudioPress Author URI: http://www.studiopress.com/ Version: 1.0.1 Tags: one-column, two-columns, left-sidebar, right-sidebar, accessibility-ready, custom-colors, custom-header, custom-menu, featured-images, full-width-template, sticky-post, theme-options, threaded-comments, translation-ready, flexible-header, footer-widgets Template: genesis Template Version: 2.2.3 License: GPL-2.0+ License URI: http://www.gnu.org/licenses/gpl-2.0.html */
I want to change the Theme Name on line 2 from Smart Passive Income Pro to Smart Passive-Aggressive.
/* Theme Name: Smart Passive-Aggressive
By doing this, I’ve indicated in the documentation that this is no longer the Smart Passive Income Pro theme. I’ve also made it easier to identify the Smart Passive Aggressive theme from my WordPress admin.
style.css
appearing in the WordPress admin under the Appearances > Themes menu.3. Update the rest of the doc block in style.css
While I’m in style.css
, I’ll update some other items in the doc block for a couple of reasons:
- A year from now if I go back to make a change to the Smart Passive Aggressive theme, this documentation will help me remember details, like which theme I used as a base.
- Should another developer eventually work on this theme, they’ll appreciate knowing these details, especially when a theme is based on another.
/* Theme Name: Smart Passive-Aggressive Theme URI: http://my.studiopress.com/themes/smart-passive-income/ Description: Customized theme based on the Smart Passive Income Pro theme from StudioPress Author: Carrie Dils Author URI: http://carriedils.com/ Version: 1.0.1 Tags: one-column, two-columns, left-sidebar, right-sidebar, accessibility-ready, custom-colors, custom-header, custom-menu, featured-images, full-width-template, sticky-post, theme-options, threaded-comments, translation-ready, flexible-header, footer-widgets Template: genesis Template Version: 2.2.3 License: GPL-2.0+ License URI: http://www.gnu.org/licenses/gpl-2.0.html */
I’ve changed the Theme Name, but left the Theme URI as is, pointing to the original Smart Passive Income Pro documentation. That documentation might come in handy at some point, so it’s good to leave that Theme URI reference intact.
I’ve updated the Description to show that Smart Passive-Aggressive is based on the Smart Passive Income Pro theme. Again, potentially helpful information to know if I (or another developer) come back to this file later.
For the Author, go ahead and put in your name. Also update the Author URI to show your domain (again, very helpful to know where to find you if another developer ends up working on the theme).
The rest I’ll leave as is.
One important thing to note before we move on: Because this theme is originally licensed under GPL, anything I make based on it (i.e. my own child theme) must keep the same licensing.
4. Change the screenshot
While not technically necessary, updating the theme’s screenshot makes it easier to visually identify (and differentiate) in the WordPress admin.
The screenshot doesn’t need to be fancy.
The easiest method I’ve found is to open up the theme folder, find screenshot.png
and then open it in an image editor. This ensures that I’m starting with the right image dimensions. For simplicity, I’ve given it a solid background color, overlaid text with the theme name, and saved it back to its original place in the root theme folder.
Once I’ve taken these four steps, even without changing a single thing about the appearance of the theme, I’ve made it a unique child theme and am ready to begin customizations.
5. But Carrie, I feel weird about this
Maybe you’re thinking that someone else went to all the hard work to create this theme and is it right that you’re trying to pass it off as your own?
No. And I’ll tell you why.
First, as you can see from the previous steps, the intent here is not to deceive anyone, but to help clarify that a child theme is unique and should not be mistaken for its “inspiration theme.” That is the right thing to do as it helps avoid any confusion or mistakes in the future when modifying the new theme.
Second, the beauty of WordPress is that its open-source software. The entire point is to use the code base that other people have made and make changes through themes and plugins to meet the specific needs of your project.
Note though that you do need to leave any existing copyrights in place (thanks Gary Jones for clarifying that).
I don’t want to get too philosophical here or start a GPL debate (much smarter people than me can break this down), but if you felt weird about taking the steps I recommend, just know you shouldn’t. It’s legit.
6. But Carrie, what about contracts?
I’m not going to talk in depth about contracts here, but I do want to try and answer the original question:
Do I… call the theme my own and…reference it as custom in my contract?
For starters, I recommend being upfront with clients about whether you’re creating a complete custom design and theme for them versus taking a stock theme and modifying it to suit their needs. After all, the cost is quite different (think tract homes versus custom home builds). Modifying existing themes is a cost-saving measure for clients who don’t need a fully custom solution – sell that as a benefit.
Second, as I already mentioned, the theme must keep the GPL license. That doesn’t mean that your client is under any obligation to distribute or give away that code, but you cannot change the license. That’s true whether you modify an existing theme or create one from scratch. This is a nuance that most clients probably will not care about, but if they want to use WordPress, that’s how the licensing works. You can “hand over” ownership of graphic elements, photography, designs, whatever you custom create… just not the code.
Keeping these things in mind, write the language of your contract however you’re comfortable.
A note on working with Genesis child theme development (hooks and filters galore!)
The Genesis Framework includes a ton of action hooks and filters you can use to either change default behaviors or add new functionality.
This means that child theming with Genesis is more about utilizing hooks and filters than it is about creating templates, as you would with a more traditional WordPress theme.
For example, let’s say you’re creating a child theme based off a theme downloaded from wordpress.org. If you wanted to change the footer, you’d create a new template file for your child theme named footer.php that would override the footer.php file from the parent theme.
Conversely, with Genesis you’d use one of the many available hooks and filters to change the footer – no new template needed.
If you’ve done a lot of child theming before, doing things the “Genesis way”, is a significant mental shift. Once you get used to it, though, you’ll love how easily you can make changes.
If this is something you’d like to dig deeper into, I have two courses at Lynda.com that can help:
- Customizing Themes with Genesis for WordPress (take this course first)
- WordPress and Genesis: Building Child Themes from Scratch
Developer pro tips
Here are some lessons on Genesis child theme development I’ve learned along the way. These tips will save you time and leave you with cleaner, leaner code.
Develop locally
If you’re developing on a live site, you’re wasting time. Skip the constant FTPing files and waiting on browser reloads by running WordPress locally.
There are a few requirements to run a WordPress site locally: an Apache server running PHP and a MySQL database. You can set up those components yourself or use a tool like DesktopServer, Local, or DevKit to do it for you.
Ditch the extra CSS
Unless you’re starting with a blank style.css
file, your stylesheet will include things you don’t need.
For instance, you can get rid of theme color options since you don’t need them for a custom build. Other things you might remove are elements you know you won’t use, like certain layouts or widget areas.
Keep your stylesheet tidy
Make sure the Table of Contents in your style.css
file stays up to date with the items you’ve added or removed. Staying organized makes your life (at least the coding part of it) easier.
When you add new styles, don’t stick them all at the bottom of the stylesheet – add them in context. For example, if you’re adding styles for a plugin, group it with the other plugin styles.
Document your code
Document every bit of code you write. If you copy and paste code from a tutorial or another site, document that too.
When you’re in the build process, all of your code is familiar and it’s tempting to skip the documentation, but when you step away – even for a few days – you’ll forget what a bit of code was for and waste your time re-orienting yourself.
Give your future self the gift of documented code!
Some final thoughts: Blank Slate vs a Starter Theme
Ask 100 developers how they prefer to create a theme and you’ll get 100 different answers.
The benefits of starting with a blank file in a code editor are that you don’t carry over unnecessary code. You only create the code you need.
The benefits of starting with a starter child theme are that you can re-use code you’ve already written, speeding up your development cycle.
So, which is better? Well, there’s 100 different answers to that, but here’s the general guideline I recommend:
If you’re new to child theming:
Don’t start from scratch. Find a Genesis child theme that most closely resembles the result you want and then customize it to match exactly what you need. Over time you’ll develop a level of comfort working with theme files and a basic understanding of working with the unique hooks and filters in Genesis.
If you’re comfortable modifying existing themes:
Start from scratch – at least once. It doesn’t have to be complex or even for a real project, but doing building a theme from the ground up will help cement your knowledge. As you add only the code you need to get the result you want, you’ll gain a far deeper understanding of the Genesis Framework.
If you’re really finding your groove as a developer:
Create your own starter theme. There’s no need to re-invent the wheel every time you build a new theme. As a developer, you’ll have elements you always like to incorporate. By including these in your starter theme, you’ll save yourself time with each new project. Also, use version control as your starter theme will be ever-evolving.
Wrapping it up
Genesis child theme development is an art. While there’s certainly some science, such as correctly written code, the process of building out a child theme is a little different for everyone.
When you’re starting out, it’s helpful to see how other developers structure their workflow and about working with themes, but with each new theme you build, you’ll define your own workflow and find the things that work best for you.
The most important thing to remember? Have fun coding and don’t be afraid to break things! That’s the best way to learn.
Great info as always Carrie! One thing I think needs updating, though (or maybe clarification) — you mentioned that with the free version of DesktopServer you can run as many WordPress sites as you want locally. That’s how it is with the premium version, but not with the free version — they limit you to 3 sites. (I used it recently and had to delete an old site to set up a new site, so this was fresh in my mind.) Unless you meant you can run as many as you’d like…3 at a time 🙂
Good call, Bonnie! I’ve used the premium version for so long that I forget what’s not included in the free one. 🙂
Thank you, Carrie! This really clarified this topic for me. And I’m quite surprised by the answer! But 3 cheers for the GPL!
~Katharine
3 cheers for it indeed! I feel like I’m spamming my own comments to mention this, but I recently chatted about it on the StudioPress.fm podcast if you care to listen:
http://rainmaker.fm/audio/studiopress/carrie-dils-3/
“Modifying existing themes is a cost-saving measure for clients who don’t need a fully custom solution – sell that as a benefit.” That’s a great tip, especially if your starting small with clients who can’t afford high-end development and just want a site.
Absolutely. Most people who don’t work in our space (i.e. our clients) don’t realize the difference between “off the shelf” and custom until they’re educated. So much of what we do is simply educating – especially about what the available options are what the price variance of those options are.
I love the way you discussed the whole renaming issue in point #3 above. I’ve struggled on how to document this and your approach is, well, let’s just say the ‘KISS’ theory is fully represented.
Problem solved on my end.
Thanks again for another straight-forward commentary on development process.
LOL Keep It Simple, Stupid for the win! 🙂
Excellent post (as always.) One question. Are you saying it is legal (moral, and/or ethical) to make a few (simple) changes to a commercial Genesis child theme, rename it and then go out and resell it to others?
I would think that if I took a bunch of Studio Press themes, added a widget area here or there, renamed each to my own names… all of this work taking me a day… and the next day opened up a theme shop and selling the themes… that their lawyers would be coming after me at a dead run!!
The SP people might have spent months creating the theme and here I come along and make a simple change to it and resell it!! How fair is that?
Are you saying the GPL will let me do that?
Hey Al,
Thanks for the comment. There’s a lot of nuance to the GPL, but the short answer to your question is yes. That doesn’t mean you wouldn’t get a call from SP though. 🙂
Here’s a timely post on the topic: https://www.proteusthemes.com/blog/licensing-pros-and-cons-of-100-gpl-and-why-we-made-a-switch/
Cheers,
Carrie
Thanks again Carrie for a very timely post. I’ve been customising a few child themes lately (including Utility Pro, natch 😉 ) and have been wondering about exactly this kind of thing. Good to know I’ve got it mostly right – and what I need to fix!
You’re quite welcome! And for the record, there’s probably nothing _wrong_ with what you’ve been doing. This is just my method. 🙂
Specific answers to a mess of questions I’ve been needing clarification on. Thank you, Carrie!
Can we take it one step further? I add or modify a bunch in the functions.php file, Do I need to change out the name of the old theme for the new theme in function / action calls (not sure if that is the correct php term)? I’ve been terribly inconsistent in doing this, but wasn’t sure what was considered best practice.
Thanks a bunch!!!!
My preference is to leave all the original function prefixes as they area (i.e.
function spi_do_something()
), but then prefix any new things I add with either my initials or the new theme name (or abbreviation), such asspa_do_something()
orcd_do_something()
.By doing that, it makes things simpler at a glance to see what was “original” to the theme versus what was custom.
In the case of me building a custom theme from scratch, I’d recommend making sure all prefixes are a match.
Love this post. It took me a long time to put in the hours to create my own Genesis base child theme to work from for each of my custom builds, but it is something that saves me countless hours and I’ve been able to tweak over time to fine-tune the starting points of the development process. So, while I don’t work from other child themes, the concept is the same.
Also, love the comments about tidy CSS (yes, please add CSS where it should be, not just at the bottom of your stylesheet) and the need to properly comment code. Very important for developer sanity!
Cheers!
Hi Carrie,
I loved your Lynda.com class customizing a Genesis theme, you taught me TONS!
I have a follow up question to dialady’s post.
I’ve taken a child theme, let’s call it Amazing, and wanted to rename it/make it my own called FatCat.
I’ve gone through your tutorial and everything is working great.
My question:
In functions.php (and other child theme files) should I rename any functions that reference the child theme name
‘amazing’
to
‘fatcat’
or should leave those references as is?
and how should I reference the theme name in any new functions I add?
For example, in functions.php, should I change the following from ‘amazing’ to ‘fatcat’?:
genesis_register_sidebar( array(
‘id’ => ‘home-slider’,
‘name’ => __( ‘Home Page Slider Widget’, ‘amazing’ ),
‘description’ => __( ‘This is the slider widget on your home page’, amazing’ ),
) );
and for a new function should I reference ‘amazing’ child theme name or ‘fatcat’?
Thanks in advance, and sorry to be so overly confusing with my question
🙂
Heya! I’m so glad to hear you enjoyed my course!
As for renaming functions, here’s my suggestion. What you point out in your reference above is the text-domain, which is used for internationalization (just had a new course come out this summer on WP & Internationalization <-- shameless plug 😉 ).
I’ve been curious about this before. Thank you! This makes a lot of sense. 🙂
Hi Carrie,
Your tut worked a treat, thanks! Your post so timely as I googled customization and you’ve just written this one. One query though, the original theme has specific settings which are labelled as such in the theme settings menu on the dashboard. So the label still reads ‘Orginal theme’. Is there a way to change that to my newly-created theme name? Of course, clients can still see the original named in the CSS, but it would be easier for them to have the correct (new) theme name on the dashboard menu. Thanks in advance.
Hey Elizabeth,
You could definitely do that. Just search the theme files for whatever that label is to see where it’s coming from in the code and swap it out for your theme name.
Cheers,
Carrie
Thanks Carrie, I’ll go hunting for it then! Glad I can change it.
Is it possible to use mostly JavaScript on a page? Or is it best to create a non WordPress site, that is, using a Bootstrap or Foundtion Framework?
Hi Carolyn, sure. Just depends what sort of application you’re wanting to build whether it makes sense to use WordPress as a front-end or something else.
Bootstrap (i.e. non-WP) sites are quick to build and are terrific for sites where the user is not going to be making many or frequent changes because they have to make them directly in the HTML via a text editor usually through FTP. We do a lot of these kinds of sites for clients who don’t need a full CMS like WP (http://newmediacreate.com/lim/#portfolio) .
However, there are lots of ways to incorporate javascript into WP once you get WP to disable the blockage of script tags. See this discussions for a start… there are many, many more via search:
https://premium.wpmudev.org/blog/javascript-for-wordpress-people/?utm_expid=3606929-90.6a_uo883STWy99lnGf8x1g.0&utm_referrer=https%3A%2F%2Fwww.google.com%2F
https://www.godaddy.com/garage/webpro/wordpress/3-ways-to-insert-javascript-into-wordpress-pages-or-posts/
As for using WP as a vehicle for a full-bore web application besides the current “applications” of blogging, or e-com (via a plugin), or membership, etc. there is a ton of discussion on that with the development of the new WP API. Indeed, Automatic with their Calypso admin front-end has already incorporated a Javascript framework called React with WP (In truth React is not a framework in the true definition of the word, but actually just a library for the ‘view’ layer.)
I’m somewhat surprised they chose React (owned by Facebook) over something a bit more versatile and with a large eco-system like Angular. By choosing any framework they have sort of locked themselves into a box they may not easily be able to get out of later on. They might have been better advised to keep things ‘plain vanilla’ with just Javascript and jQuery, similar to how they adopted open-source PHP. It is even more critical an issue with React which open-source today, but there is a clause in the React license saying that Facebook can revoke that.
If you are thinking about creating something to compete with FaceBook or Twitter, or Netflix I don’t think WP is going to work too well until the entire codebase is cleanly re-written so that the CMS will scale better than it does currently. (True, you can overcome the lack of scalability of WP via hardware… the WPEngine and other other datacenters who can spin up Digital Ocean or Linode type servers quickly know how to do this, but it is better to first optimize the codebase and only use (expensive) hardware (server) solutions if needed.
These are interesting and exciting days for WP, that’s for sure. It soon will not be your father’s CMS platform anymore. Just as Automatic created a ‘skunkworks’ project for Calypso I’m sure that they know the need to modernize the codebase and are working on implementing that project, if they have not already started.
Jaja! Smart Passive Aggressive, love your sense of humor!
Hi Carrie,
What effect does the above have on code such as this…
“`
//* Child theme (do not remove)
define( ‘CHILD_THEME_NAME’, ‘Digital Pro’ );
define( ‘CHILD_THEME_URL’, ‘http://my.studiopress.com/themes/digital/’ );
define( ‘CHILD_THEME_VERSION’, ‘1.0.4’ );
“`
I have made the changes you have suggested but just noticed a few things.
Craig
Hey Craig, good question. That bit of code is defining constants (similar to variables) that can be referenced anywhere else in the theme.
Thanks Carrie, very helpful. I have been heavily modifying Genesis Child Themes for years and I haven’t renamed any of them. What are the advantages of renaming a grandchild theme?
I don’t recommend creating a grandchild theme (for reasons mentioned in the article). As for the benefits of renaming a child theme, it essentially boils down to recognizing that a theme is NOT identical to the child theme that “inspired” it and that you are the person who made the modifications.
I suppose it is legal to take someone’s work, which they might have spent weeks or months on, make a few simple changes to the PHP code or some minor layout change or maybe a line or two of Javascript, and then rename what is still 99% of someone else’s work, calling it your own and selling it.
Legal? OK. But IMHO it is not ethical and I would not do it.
YMMV.
Yeah, it doesn’t sit well with me either, but that’s sorta like wanting to have my cake and eat it too. There are so many benefits to GPL (starting with the fact that I’ve built my business using GPL software), but what you’re describing is definitely a non-benefit, despite the legality.
Thank you for this article Carrie. I’ve used Genesis on only one project so far, (but I’m hooked!) and I created a grandchild theme for it, not knowing at the time what to do. Thankfully, now I do.
So I’ve read in the above comments that you do not recommend changing any theme references in the functions file. I’m assuming that would include the CHILD_THEME_NAME constant? If so, I would then need to refer to any child theme references in my future customizations with the constant of the original child theme (let’s say the Sample Theme)?
There’s nothing wrong with leaving
CHILD_THEME_NAME
as the original theme name or your custom theme name (I was just giving my opinion). The beauty of defining it in a constant though is that you’d never need to refer to the theme name (original or custom) since you can simply referenceCHILD_THEME_NAME
.Where this is NOT true is when you’re dealing with text domains for internationalization. For example:
That might be outside the scope of the question you were asking, but if you want to read more about internationalization (and making text strings translatable), you might like this article
Hi Carrie!
I’m wondering if you have any information/articles on code documentation and best practices?
Thanks for a great article.
Absolutely! I’d recommend starting here:
https://make.wordpress.org/core/handbook/best-practices/inline-documentation-standards/php/
Never mind, fixed it… *side steps away and hopes nobody notices my comment…*
Heh heh – deleted. You’re all safe. 🙂
Howdy,
Tip for those using Sass – change your doc block in your *style.scss* file, NOT the style.css. I forgot and couldn’t figure out where my customizations went after it refreshed. 🙂
Hello Carrie
I have modified a genesis child theme which is distinctly unique and well documented and clean code.
Can i sell this theme in the market as my own theme?
Sure.
Hey Carrie,
I love this article, it has been a great help to me in customizing my child themes with Genesis.
I have a question for you about a non-genesis theme called GeneratePress. I wondered if you have ever used this one and if so, have you had any issue with using a child theme with it. Specifically, with changing the name of the theme that shows in the source code. I created a child them and activated it and it is still showing the parent name in the source code. I know this doesn’t happen in Genesis, so I wondering why its happening with Generate Press.
Thanks Carrie, for any feedback you may have.
–Rob
Hey Rob,
I’m not familiar with GeneratePress, but you may want to check this article just to make sure you’ve dotted your i’s and crossed your t’s.
Cheers,
Carrie
I have recently shifted from thesis to Genesis and honestly, I found it much easier to deal with it. You really need to be a professional otherwise thesis is not for you. But genesis can be managed with a little bit of knowledge and guidance like you have given.
Hi Carrie: What about the information in functions.php? Do you change that as well?
Yep!
Carrie this article brings so much clarity to help with the move from theme tweaker to legit custom child theme creator. I am looking forward to working through some of your courses on Lynda.com this weekend.
Thank you, Oliver. I’m thrilled to hear it!
Hey Carrie, your tuts have helped me numerous times and I just wanted to say thank you! 🙂
Thanks, Keller! 🙂
Hallo Carrie Mam,
I m a big fan your blog and Genesis theme but I am new blogger and not any idea about styling child theme. I am installed genesis child theme on my blog but not stylish theme display my blog. Please see the http://hindimepadhe.com and how to edit Code and where file it edit for style.
Please suggest me.
Thanks.
Hi Manoj,
You’re asking a question that has taken others years to learn to provide an answer. If you want to learn, I can offer resources, otherwise, I would recommend hiring someone to help.
Cheers,
Carrie
thanks for sharing
One reads this stuff and goes along, okay, I got it and then at the end of the beginning part of your writing, you contradict everything you just said by these words:
“To summarize, in the WordPress world, if you want to change the parent theme, edit the child.”
I do not agree and I think the problem is a lack of consistency in vocabulary when people speak on this subject for it’s a dead simple concept muddied by the ever changing definitions of the terms. In my WordPress World, if I want to “…change the parent theme…” I DON’T, PERIOD.
One NEVER changes the parent theme. That is the framework via its sorted heraldic osmosis gives functionality to the child. That is what one keeps just the way it is and doesn’t mess with. That is why one uses a child theme. Do your changes in the child so the parent (IT IS THE SAME AS A FRAMEWORK) when updated only updates the PARENT, (the Framework) and NOT the child, which has your custom settings.
One cannot “…change the parent theme…” by editing the child as the files of each should have (for the most part) have a wall between them but for functionality.
I would word it differently.
“To summarize: in the WordPress World; if you want to change what it looks like, which is the child theme, ONLY change it, the child theme and do not touch the Parent, the Framework, for that, the Parent, the Framework is what gets changed when it is updated, and would thereby obliterate your changes, while keeping all your customization’s untouched, secured in the child.”
I appreciated your other writings and comments as well as herein on ownership but that is dictated by copyright laws and WordPress’s EULA.
(…and as an aside, my CAPS are for emphasis of the term, not emotion.)
Rick
Just semantics, no? Instead of “change the parent theme” maybe “modify the default behavior of the parent theme.”
interesting it look like a complete guide for me genesis theme development is not so easy but not so hard its work of trick and anyone can make it quite beautiful design
Thanks a lot for this in-depth guide mate. We have just started a gaming site, and was thinking of moving into Genesis, and add some custom functions to it via a child theme. Do you have any references for our developer to get started on things?
Regards,
Priyangshu
I sure do! I have a couple of in-depth courses for Genesis. Here’s a good one to get you started: Customizing Themes with Genesis for WordPress.
Thanks for this helpful article and also your Lynda.com tutorials. Are child themes regularly updated and if so, what parts of them? Say I want to make a few simple tweaks to the css to the Business Pro child theme. Should I make it to Business Pro’s css and redo them whenever it updates. Or should I remake Business Pro to my own theme, as you describe in this article. If remaking the child theme, will I miss out on necessary updates?
Hi there, good question. You’ll never want to update a child theme after making edits to it. If an update were to come out for, say, Business Pro, you could re-download the files and look for a file called Changelog.md or Changelog.txt to see exactly what changes were made in the updated version.
Chances are very high that the changes are not critical and you don’t need them. If you did though, you could always apply the changes manually to your modified version of the child theme.
Hi Carrie,
I am so SO grateful for your two excellent lynda.com tutorials on Genesis and child themes, which is how I found this page, which also contains essential info for me. You are a life saver to this Genesis newbie!
Doesn’t it seem that there should be a better way to supply child theme updates if customizing the child theme (commonplace, right??) means one should never simply apply updates but check the changelog.txt (as you describe in the previous comment) and then apply those changes manually?
Susan
Thanks, Susan!
I don’t recommend updating child themes (updates are typically for teeny-tiny CSS bugs or typos, rarely anything massive) – just keep Genesis updated and you’ll most likely be fine. If you do opt to update a child theme, I’d take the route you suggested of checking the change log and manually applying those updates to your theme.
Ah! Very reassuring to hear that child theme updates can be expected in general to be not very consequential or critical… Thanks, Carrie – you’re the best! !
Are there any security implications to consider when creating a child theme or when updating it?
If you’re ever writing custom code, you’d want to be aware of best practices to mitigate security risks, but other than that, there’s not really a concern associated with updating themes.
Hi Carrie,
I’ve watched a couple of your classes on Lynda and read this article, so I think I already know your answer: you recommend just making a Genesis child theme your own. However, I was trying another approach for a Genesis child theme that I bought (so far I only want to change up the Google Fonts). At the bottom of the child theme’s funtions file I added an include_once to register my own custom-functions file. In that file I used wp_enqueue_style to add my own Google fonts and to register my own custom.css file, then updated that with my preferred fonts.
The problem is, my Google Fonts are not displaying. I see them and the custom.css file when I use the developer tools, but they have that strikethrough through them. My preferred fonts will display if I toggle the checkboxes for the child theme’s fonts off. I use the Show Current Template plugin and can see my custom-functions file down the list, next to the child theme’s functions file, so that part must be working. I wonder if I need to do something like wp_deregister_style to remove the child theme’s fonts.
As I said, I’m pretty sure you would recommend I just make my edits in the child theme’s functions and style files, and it almost looks like there is a comment to that effect in the child theme’s own functions file, but I thought I would ask what I was doing wrong anyway.
Thank you.
Hey Phil! You’re right that you’ll want to dequeue the original theme fonts (search the theme files for `wp_enqueue_style` and you can quickly find where the original theme fonts are loading in). Assuming you don’t need those fonts, there’s no reason to load them since that just adds additional page load time for the server call.
Theoretically, you can just delete the wp_enqueue_style() function calling the original theme fonts and remove a reference to those fonts in the stylesheet. That should set you straight.
Hi Carrie,
I just finished your WordPress Themes: Customizing Themes with Genesis on Lynda/LinkedIn. Great course! I am in the process of revamping my site and offering WordPress design services utilizing Genesis. Thanks for this article too. I was concerned with the proper way of calling a theme my own.
Grazie!
Thanks, Adrianne. Glad you found it helpful and wishing you the best with your new site!
Hi Carrie,
I like to create a Genesis child theme and I like to sell it on my blog.
I have a doubt I can use Genesis simple theme JS files for my child theme or I need to create my own JS files to sell my Genesis child theme?.
Thank you!
It’s all licensed under GPL (https://github.com/studiopress/genesis-sample/blob/master/js/genesis-sample.js#L6), so you are free to do as you wish with it.
Thank you so much for your help.
This is what I searching for. Thanks!
Thanks…
Nice Article Ma’am. It’ll help me a lot
Thanks
Very reassuring to hear that child theme updates can be expected in general to be not very consequential or critical Thanks
Hey Carrie, do you provide any kind of theme development service? Can you help us out to develop minimal fastest theme. AS developing by self isn’t enough. Anyways like your tutorial.
Thank you Carrie!
I’m using your article 2½ years after you first wrote it and it is working beautifully. Thanks for taking the time to share this. Have a wonderful day!
Glad to hear it!
Hello again Carrie,
So far so good. I’m still getting used to the block editor and the “customizer” but for the simple layout that I need, things are going well. What do you think?
Have a nice weekend 🙂
Hi Carrie,
Should you also update the theme name references in the templates.php file as well?
I usually don’t bother.
Hello carrie,
It is really an awesome and helpful post. Keep writing
Hi, Carrie
I just finished WordPress Themes: Customizing Themes with Genesis on LinkedIn Learning. You make understanding hooks so easy.
Seriously, my confidence in building my own theme actually exists now. Thanks a lot!
You packed the course with major resources to reference to including this post. The biggest for me is the Visual Hook Guide via Genesis Tutorials. GOLD!
THANK YOU!
That’s great, Mike. I’m glad to hear it!!
Thank you Carrie!
I’m using your article 2½ years after you first wrote it and it is working beautifully. Thanks for taking the time to share this. Have a wonderful day
Thank you so much for your help.
Just wanted to say I found this really post really useful in working with one of my first Genesis based sites. Thanks for taking the time and sharing your knowledge.
Glad to hear it!
Hey Carrie. I always wondered what all the excitement was about the Genesis framework and themes until i started reading more about how great it is from a few good sources and then i found your resources…awesome and super helpful so thank you!
Do you know why they took SPI theme off the site in StudioPress? I wanted to see how good it was but it seems it is nowhere to be found now 🙁
Thanks for sharing your talents!
Thank you for writing this post Carrie, you saved my day, We were going to customize a third party theme and were not sure we can change the theme name or not or can add our URL or not.
But this beautifully written post helped me with all my questions.
Keep writing 🙂
Regards,
Ijaz Rafi
Hi Carrie,
Thanks for the effort you put into the articles, they’re very helpful and well explained.
I bought your genesis theme course on LinkedIn. Great resource!
When it comes to a editing a child theme, how would you update on a constant basis a style.css file or any of the php files from a local to a live server?
Is there any tool you’d recommend for version control?
Thanks,
Julien
Hey Julien,
I’m glad you found it helpful! I use Github for version control. I’ve used Deploybot (https://deploybot.com/) in the past to push code to a live server (basic workflow is to use GH locally, push changes to origin repo, and then deploybot sends it to server). There are a ton of deployment workflow options, though some of them might be overkill for what you’re trying to accomplish.
If you’re just looking for something to push local to live, I like Local (localwp.com) and DesktopServer.
Cheers,
Carrie