In addition to the other two suggestions, there is another possible approach: move all of your custom-app functionality out of the Theme, and into a hosted web service, to which the Theme connects via API key. That way, redistribution of the Theme itself does not impact your custom app-based business model, because the app would require Theme plus valid API key.
This approach may or may not work, depending on the nature of your custom app, but it is a successful model for some commercial Plugins, and is fully GPL compliant.
Related Posts:
- How do you protect a premium theme from being copied?
- Does a premium / for sale theme need to go through the WordPress approval process?
- Is accessing theme and using customizer GPL distribution?
- License of the used Bootstrap Theme is not GPL compatible
- Warning: This page allows direct access to your site settings. You can break things here. Please be cautious!
- How to override pluggable function in theme?
- Should we use get_template_part() in functions files instead of include_once?
- Reset positions of metaboxes in admin
- WordPress Settings API error
- Remove the word ‘Categories’ from wp_list_categories
- Using Bootstrap in themes
- Add a dropdown to theme customizer
- design and development workflow
- How to control initial wp_head() output?
- How do I show sticky posts on a static front page that also contains content?
- Any walker causes blank menu?
- How to change post thumbnail title and alt attributes to post title?
- Why might $input (Settings API) be coming through empty?
- add generated stylesheet from parent theme after child-themes style.css
- Creating Page Based on Category
- How to check if post has any tag?
- Add custom field automatically to custom page types
- using wp_enqueue_script to attach jquery-ui
- Can not Remove Archives and Meta from Sidebar
- Get last modified date for menu link
- Similar Posts – NO plugin
- How to add multiple custom widget areas
- WordPress how to override function adjacent_posts_rel_link_wp_head() in link-template.php the correct way
- Best approach to create sites with Modular Content? [closed]
- front-page.php is not Listing in Static Front Page List
- Change file name from wp_generate_attachment_metadata
- Change setting name in Customizer and keep the data
- CSS won’t style output of wp_nav_menu() correctly
- How do I remove twentyten without ruining what I did?
- Custom theme not visible in Appearance
- Use debugging for add action events
- Obtain full v2 REST url?
- Creating multiple hooks for theme
- after_setup_theme, Global Variable and Theme Customizer
- Including Javascript options
- Show warning if plugin is missing
- How to make WP admin recognize a newly created child theme?
- Does WordPress theme customisation API support section hierarchy?
- Custom Theme Bootstrap
- How to provide support for [gallery] shortcode?
- WP_Customize_Color_Control omitting # symbol
- Theme translation not applying
- How to add filter the post thumbnail before save in database?
- Custom theme development additional pages
- How to set the currently active page in the menu including parents
- What is the safe way to print tracking code / pixel code before tag or tag
- WordPress taxonomy and archive custom class
- Using My Own Classes On Wp Unit Tests
- Acivate all themes multisite wide automatically
- What is the meaning of WordPress’s recommended css classes and where are they applied?
- Website pagespeed problem
- Theme support title tag – how to replace the default WP separator (with a filter)?
- Why are some of my menu items not displaying on my menu?
- Why would changing a child theme to a normal theme pass a Template is missing. error
- ajax response -1 in wordpress theme
- How to change footer credit text in Twenty Twenty One theme with a hook?
- How to override template files in parent theme?
- LESS not working in WordPress [closed]
- How to call a widget in a loop at a specific iteration value?
- Remove div element generated automatically from theme [closed]
- What is the structure for a one-page layout?
- How to use the _S framework
- AJAX call fails when sending JSON but works with URL style string
- How to make excerpt image be full size instead of thumbnail?
- How to get a random single category name in get_posts()?
- Why nav_menu_css_class doesn’t work with apply_filters?
- WordPress theme files Organization
- Text widget is placing everything side by side. I want to post it above
- the_content() not displaying description correctly
- How to display latest posts with authors image
- Menu names not getting translated
- How can I convert a list of title-posts into a sequence of comma separated text? [closed]
- Is it possible to issue a theme update that requires a new plugin?
- Get property of non-object on theme activation
- wp_editor some functionality not working on custom theme
- Update modified Shopify third-party theme [closed]
- Malformed RSS feed
- How to prevent XSS attack in wordpress theme?
- Featured Image Module Randomly Disappears
- How to add custom field option with menu?
- enqueue script if page is not equal to
- Unable to convert all css and js features to WP theme
- Theme Option’s Save Button is not working
- WPeC – Adding conditional logic to purchases [closed]
- Header is not showing full width
- Custom contact info in user profile not displaying
- How to defeat “Blog pages show at most __ posts” setting in the loop?
- pagination/prev and next page links not showing
- Admin bar is showing up to non logged in users
- on click load images on the same page [closed]
- themeforce (happytables framework) implementation
- Custom background not showing
- Is there a way to prevent wp_head from outputting self-closing tags?
- Multiple content areas with Gutenberg – Transparent areas mid content
- Is it possible to have two templates in an article hirearchy?