Is it even possible? Absolutely. You just need to get creative and stop being in the rut.
I’m doing this article for educational purposes; that I do something that simply wasn’t within the creative imagination of others (and perhaps because as a professional Genesis developer I get creative about Genesis itself ). It’s also for the adrenaline rush that I get when I build upon the lines of my legacy of creative innovations like Colorful Tabs, FfChrome, Lander.
Advantages of building parent themes
The primary advantage of building parent themes with Genesis is that you are able to eliminate the disadvantages of child-themes.
No dependencies on a parent theme
Let’s face it. How hard is it to sell a Genesis child-theme when your customers are constantly intrigued about the availability of Genesis? Is it bundled? Can it be bundled? Why can’t it be bundled? Will I have to buy it separately? So after buying your $70 theme, I’m not done yet? I have to buy something else?
Let me put it this way: You buy a computer monitor. And the bloody thing doesn’t come with a power cord.
Expanded market—whole wide-WordPress theme world awaits you
When you build parent themes you are not limited to the tiny genesis-child-themes niche. You can decide what, where and how to sell. With WordPress now powering about 25% of the websites on the internet, why do you want to limit the availability of your hard work to just a tiny fraction of the market? Does your work not qualify to reach a wider audience?
Make your themes available on WordPress Themes Directory
Can you submit child-themes to WordPress directory? Not until you have the parent theme on the WordPress Themes directory. Yup, they don’t want people wasting time downloading something that doesn’t work out of the box. When you build parent themes, you can make your work available on the WordPress themes directory. And your work reaches thousands of users. (Of course you’ll have to sync up with the WordPress Theme Review team for exact requirements.)
Take total control of the framework for full utilization
So Genesis update broke your child-theme? Or perhaps you want to dig in and tweak Genesis itself? When you have Genesis as a library of your parent theme, you can go in and do what’s required without the fear of losing your work across updates (turn off the updates… see below).
Allow auto updates for your theme revisions
And when you have your own parent theme, you can build in your own update system and offer newer revisions of your theme. I’ve made this mistake of offering a child-theme with a minor bug and I had to mail all my customers to do a manual update. There’s nothing like an easy auto-update that fixes the bug for you.
Allow building child-themes for your parent theme
The very advantage of a child-theme is to be able to extend the parent theme. And now since you have a parent theme, others will be able to customize it to their requirements and satisfaction by creating child-themes. That’s the beauty of child-themes.
Ready to get your hands dirty? Let’s begin.
- Start by creating a basic parent theme structure. You’ll need at least a style.css, header.php, footer.php and an optional functions.php.Since we’re creating a full-fledged parent theme that is expected to support all the other templates such as archive view, search view, sidebar, etc., we will include the following files into our parent theme (by copying them from Genesis theme directory):
- Now create a folder and rename it to your parent theme name.For example, if you’re creating a theme MyParentTheme, you can create a folder my-parent-theme and put all the Genesis template files mentioned above into your parent theme folder.
- Next copy and paste the entire genesis folder into your parent theme folder.
- Once you have the base structure for the parent theme in place, you will need to edit functions.php added in the root of the parent theme folder. Comment out the existing code in functions.php and add the following code:
// Define the constants that would establish the right relation to the new directory structure define( 'GENESIS_LIB_DIR', get_template_directory() . '/genesis/lib' ); define( 'PARENT_THEME_NAME', 'MyParentTheme' ); define( 'PARENT_URL', get_template_directory_uri() . '/genesis' ); // Initialize the basic functionality of the theme by calling the Genesis init file require_once( GENESIS_LIB_DIR . '/init.php' ); // Disable the Genesis theme auto updates to make sure it does not break anything remove_theme_support( 'genesis-auto-updates' );
- Package the theme as a zip file and upload it to your test WordPress install. Activate the parent theme to verify that everything is working as expected.
Take it to the next level:
Now that you have a complete control of the power of this engine, it’s time to take control and work beyond the basics.
You can go ahead and customize it to create standalone WordPress themes; powered by the robust engine of Genesis Framework. And just like child themes you can go on customizing the parent theme for creating a theme with desired features and looks.
Some of the advanced things you can do is to implement your own theme update system.
Yahnis Elsts has built an excellent WordPress theme & plugin update system for this very purpose. You can tweak and extend it for license validation and all.
You could also built plugins for your parent theme same way like there are for Genesis. This will allow users to quickly add functionality to your theme.
All that said, this is an excellent learning exercise. Genesis is GPL. If you have doubts, please understand your rights as per the GPL. If you have a dilemma please read this: It’s legal but unethical Are you ready to embrace the power?