Child Theme Authoring: Selling Themes
Layers is a unique page/site builder & theme framework for WordPress. Child themes for Layers can provide additional advanced styling, templating, and actions/filters. The following guidelines are tailored to commercial themers looking to submit official Layers WP Child Theme items to ThemeForest. Even if you plan to sell your theme independently, we recommend using these guidelines as a checklist to ensure the easiest maintenance and best success for your product.
- Layers Child Themes should follow all standard WordPress Theme submission requirements on ThemeForest. The Themeforest theme checker plugin helps a lot in clearing these hurdles, as does the regular Theme Check plugin from wordpress.org. Keep in mind you only need to worry about checking YOUR theme, not Layers.
- The Layers theme should not be included in the child theme zip file. Include a prominent link to http://www.layersp.com in the Item Description and the documentation. You may copy or include our install guide to help.
- Child themes must include an index.php file or they will not be able to be uploaded to ThemeForest. If the child theme doesn’t need to customize the parent theme’s index.php, just call the parent’s index.php file from your child theme’s index.php file. For example, the index.php file should look like this:
// load the parent index.php file
require_once( get_template_directory() . '/index.php' );
Item must have the following at the top of your product description on Themeforest to help buyers know that the item is dependent on Layers.
<a href="http://enva.to/-onzw"><img src="http://all-marketplaces.s3.amazonaws.com/growth/layers/landing-badge-small.png"></a>
- The child theme should follow a similar file / folder structure as the Layers theme framework itself as in the following example:
- Child Theme Folder /
- assets /
- css /
- images /
- js /
- languages /
- partials /
- assets /
CSS & Styling
- CSS rules must be specific enough to override the CSS used by the parent (LayersWP) without using !important. For more information on CSS Specificity see this article.
- Child Theme should not de-queue or re-enqueue the parent stylesheets
- FontAwesome is already in Layers, do not enqueue or include it twice
- Google fonts are already in the Layers framework, you do not need to include the library twice. Set fonts in the Customizer Defaults only.
- Font icon libraries, if included in your theme, must be placed in a subdirectory of the child theme’s assets folder.
- Additional font styles and @font-face CSS should be kept in a separate “fonts.css” stylesheet.
- The “fonts.css” stylesheet must be enqueued as a dependant of the Layers theme framework.css stylesheet to ensure it loads before the child stylesheet.
- Layers Customizer defaults must be setup in the functions.php to allow basic color, layout and font customization and be verified to work (ie your CSS styles should not oiverride the user’s customizer choices). See layers_customizer_control_defaults for detailed usage.
- Modifications to core Layers scripts (such as the slider) must not attempt to load a modified copy of the script over the core version. You should use the script’s API or jQuery snippets to modify arguments instead
PHP & Templates
- Including separate PHP files or libraries must be done using the “require_once()” method from within the child theme’s “functions.php” file.
- Any page templates added to the child theme must use the Layers framework HTML structure, classes, and functions for calling elements like sidebars (as per the default Layers page template).
- Child Themes must not modify the following elements in existing Layers templates:
- Do not change template heading types. Headings have been optimized for SEO purposes and are directly connected with framework typography styles.
- Do not swap out HTML elements or break away from the Layers framework structure (e.g. changing all <h3> to <h1>). Adding HTML elements is okay.
- Do not remove default classes or function calls inside the element wrappers, as doing so may break framework functionality or settings. Adding classes or functions is okay.
- Do not use the “query_posts()” function to modify the default query.
- When registering new sidebars, you must not use simple numbers or generic ID values such as “sidebar”, “widget-area”, or “widgets”. Sidebar IDs must be lower-case and use hyphens to separate words.
- Custom widget areas must use the safety condition “is_active_sidebar” to ensure no naming conflict with other plugins.
- Child themes must not introduce any content related functionality, such as Custom Post Types, Custom Taxonomies, shortcodes, etc. These should be handled by a separate extension plugin, and may be packaged with your Child Theme and/or offered separately as an add-on.
Child themes should include additional Preset Layouts, in order to improve the performance of the Layout generator, all images used in your preset layouts can be added to the assets/preset-images/ folder.
You should not require 3rd party plugins in your themes, but can include a notice that requires installation of your own plugins that are bundled with the theme (such as a widget extension) or suggest compatible plugins in your documentation (such as recommending Contact Form 7). This includes ensuring your theme is not dependent on any commercial plugin the user would have to buy for your theme to work. the only exception here is Layers Pro, which can be bundled with a Developer License. You are then responsible for getting updated versions to your users as soon as possible after we release them.
Do not include 3rd party plugin frameworks such as CMB etc that require the user to install developer plugins. These can introduce bugs and other compatibility issues that you will then have to depend on someone else to fix, which only increases your support load. See our developer documentation for how to add custom fields and page templates etc without depending on these libraries.
You may not bundle other Layers extensions in your theme that you did not create unless you have a developer or reseller license that allows you to do so, nor can you simply rename those plugins or copy the widgets from them into your theme or extension. Include copies of dev licenses in your theme package or readme where needed. For information specific to Layers Pro, see this article.
Envato is exclusive in that they have partnered with us to ensure Layers products sold through them are tested and compatible with Layers, and receive the best marketing and visibility via their Layers product category. Themeforest is the only marketplace where official Layers products (made by Obox) are sold.
You are not required to sell your themes on ThemeForest and are free to offer your themes on your own marketplace or a competitor such as Creative Market. The downside of using independent marketplaces is that they do not receive the same marketing, visibility through the Marketplace tab in Layers, or developer support. We welcome you to get in touch with us if you have questions about sales outlets, or just want to make us aware of a product you have that is doing well on a different Marketplace (we love success stories!)
Themes submitted to Themeforest need written documentation to help buyers with installation, setup, and customization.
- Please refer to the ThemeForest General File Preparation Guidelines for instructions on how to format your help file(s).
- You are welcomed to use the Child Theme User Guide here on our site and Layers Setup Guide for basic instruction, and provide links back to this site.
We recommend you include a link to your documentation when submitting the theme, and also a link to these guidelines to remind the reviewer that they must only review YOUR child theme, NOT Layers. It may also help to include a copy of a clean W3 Validation of your theme’s HTML if it has any and remind the reviewer that all HTML output on your demo is being handled by Layers, not your child theme othewise.
You are responsible for supporting issues specific to your child theme including install, customization, updating and troubleshooting. Issues we receive through Layers Messenger that turn out to be theme related will be referred to you.
Themes that are not updated to support major changes to Layers may risk removal from ThemeForest, so please subscribe to our newsletter to ensure you receive important notifications about beta releases and pending changes. We may advise your users to deactivate or refund themes that are found to be broken, incompatible or causing conflicts if they are not updated within 14 days of major releases.