We have our latest theme soft rejected and one of the mentioned points is this:
"Themes execute the presentation and styling of content while plugins handle content creation and functionality. Anything users will lose upon switching themes is classified as plugin territory. Here are some common examples:
- SEO options
- Non-design related meta boxes
- Resource caching
- Dashboard widgets
- Custom Post Types
- Custom Taxonomies
- Social media “like”, “follow” and “share” buttons
Anything that falls into plugin territory must be added via a custom plugin.
You may use TGM Plugin Activation or equivalent to prompt the user to install the plugin on theme activation, but it cannot be activated without user action.
Example(s): http://envato.d.pr/5hhO7f/25NwmCFn "
We think that this new rule is very bizarre as if we want to put all of those functionalities in a plugin, that will be 90% of the theme’s code. This will only make it harder for further development and updates of the theme. Now double work will be required as there will be two separate locations where things have to be adjusted - the theme directory and plugin directory. All of the files, like js and css files, get much more complex to change and load. Theme development now turns into plugin development as well - that means more file dependencies, more repositories, more code merging, which only leads to more bugs and errors.
This rule also means that if the theme relies on a Page Builder, all of the Shortcodes and additional functionalities for it have to be put in a plugin. So the “Theme” actually becomes a skeleton which doesn’t do anything. Nothing can be done with it, without installing multiple plugins. Same goes for the opposite - the plugins are useless without the Theme. There must be constant checks in the theme files for the plugins so that everything works and doesn’t break when a plugin is missing or a theme is changed.
From the concept of “Plugin Territory” (https://code.tutsplus.com/tutorials/the-concept-of-plugin-territory-in-wordpress--cms-25083) we also read:
“Here’s how: If a user gives up your theme, they will have to give up the slider(s) as well. As in the example I mentioned at the very beginning of this article, it will create frustration. And the same goes for shortcodes and widgets: Nobody should have to give up drop caps, social media share widgets or Twitter feeds when they stop using your theme. They all have to be served in the form of plugins so your users won’t have to create new slides from scratch or clean old, non-functional shortcode bits from their content.”
In the same article there is a section about Specialty Themes, where invading plugin territory should be allowed. But ThemeForest doesn’t apply different rules for such themes. Well, our latest theme is a Book Selling/Reading Theme, which in our understanding can fall in such a category. I don’t see how the plugin which will add Shortcodes like “Upcoming Book” or “Books Panel”, will be used outside of the Theme. This doesn’t make the life easier of the client nor for the developer.
TL;DR: This is a ridiculous rule, which will increase the development time and difficulty. It will also make Themes more susceptible to bugs and errors.