This depends a lot on the context.
Normally, I would say that the form should be in a plugin.
The rule of thumbs is that if it’s a functionality that could still be needed when the theme is deactivated, then it should go into a plugin.
Now for your specific case, if using the customizer, would set options that could potentially break your form if the theme should be changed, then you should keep it in your theme’s functions.php
.
But, I would still argue that it should go into a plugin and you should make sure that, in the eventuality that the theme is changed, you set default values to the form to replace the customizer options.
Because chances are that even if the theme is changed, you’d still want the contact form to be active.
Related Posts:
- Can I make plugins required?
- wp_enqueue_scripts not working in custom theme
- Automatically install wordpress plugin at theme activation
- When coding a WordPress theme, where does the theme (i.e. the presentation) end and the plugin (i.e. the functionality) begin?
- How to call “page specific menu items” in template [closed]
- Create WooCommerce Product Category Programmatically
- Can we completely remove the WordPress Sitemaps (WordPress 5.5)?
- WordPress tips for speed and performance [closed]
- How to access options of Redux framework in front end
- Update Multiple Post Meta for the Same Post In One call?
- Integrating plugins in themes
- How to load a new template page according to a particular URL?
- Should I use RIPS tool to test my themes and plugins?
- Translate third party plugin and save translation files in custom theme
- Code in theme functions.php faster than with a plugin?
- How do I future proof my older WordPress theme?
- register_theme_directory somehow “fails” when folder is outside of WP-Folder
- Display future posts?
- gallery option is not available in media upload box in costum theme option page
- Built in audio player?
- How to retrieve custom meta term of category taxonomy from WP Rest API?
- Network: retrieve a list of latest posts
- WooCommerce get_price returning wrong price when used via ajax
- Open Post Thumbnail in New Child Theme File in WordPress
- How to use get_theme_mod in gutenberg editor wordpress?
- How to Display a Plugin function (content) on frontpage using index.php
- How to make a slideshow shortcode based on the WordPress gallery shortcode? [closed]
- All of my custom posttypes are 404’ing
- how to add a button next to the wordpress view button?
- Classified ad website : which solutions to use? [closed]
- What are the specifics of WordPress development I need to know? [closed]
- How to create a code editor for my plugin .?
- Finding the URL to be used to check if plugin is installed with a theme
- Js file is not adding using this code in functions.php
- Redirect to another page using contact form 7? [closed]
- Great blogs site resources/tutorial for WordPress Developers? [closed]
- multiple language website navigation menu suggestion
- Add SideBar/Widgets Just Below the Post
- Add filter on html tags,attributes on specific function in wordpress
- plugins not working in custom theme
- Release the plugin in the WordPress repository where redux is used
- How to use the CSS of the WordPress core in the development of my administration page?
- Woocommerce singe product custom gallery output works just on the first slide
- What is the purpose of a companion plugin
- Remove Pagination for Product Category Pages WooCommerce
- How can I use my custom wordpress theme on two websites? [closed]
- why need theme,if page builder is there in wordpress [closed]
- Add user meta after a user has registered and logged In [closed]
- Visual Composer: Where do I find the source code of a custom element?
- Changing the Organize Series Listing Pages
- WordPress API functions not working at AJAX functions.php call
- What’s the right way to implement functions in footer.php
- how to design change in woocommerce cart page and all other page also by theme? [closed]
- How do you create a re-useable HTML fragment in wordpress
- Identify current wordpress theme
- Update WordPress Theme System
- Removing the custom_image_header from wp_head
- Strange Behavior on New Theme Points to Idiocy
- Code for unique user visit count on every page WordPress
- Xamp installed local wordpress not allowing to publish or install plugin
- need to find duplicated meta value in custom filed and view the posts that have the same value
- Widgets are not displaying in the admin panel
- submit two file input fields in the same form
- Content-Security-Policy implementation with WordPress W3Total Cache plugin installed
- woocommerce: Customize email with item total count
- Child theme modifications not showing up
- Submitting form to PHP
- how to change a static testimonials into dynamic
- Rename a folder via HTML POST request
- Conditional Homepage for logged in user
- My wordpress local urls is still displayed even moved to live
- when i activate my WordPress plugin cannot see customizer options or preview
- Showing different js file for different theme in wordpress customizer api
- Change Jobs for WordPress templates
- WordPress panel is not loading after plugin activated with error: HTTP ERROR 500
- How to wrap image tag into div for post only?
- Add section (add_settings_section) to a custom page (add_submenu_page) not working
- Help Code Review – I need to write on .htaccess file from theme’s function.php
- Where do the section input fields values are stored in database
- Get plugin to background of page
- How to display the Facebook like count in WordPress theme [closed]
- How to increase script execution time at my server
- Why the output of an image gallery plugin is not displayed into a page of my custom theme?
- Convert HTML5/CSS3 site to WordPress Theme (need a lot of plugins) or just use the API?
- twitter widget loads properly in all themes except my own theme?
- Plugin’s required JS not being inserted in my theme
- Directory structure for plugin changes
- How to show post attachment image
- Can anyone tell me why I can’t edit a plugin when it is installed without having to re-install?
- What is the Object for WP_Error Class?
- Active Plugins for current blog in WP Multisite Network? [duplicate]
- Disqus plugin outputs script as literal text
- Replace all media (images)
- Apostrophes replaced by '
- Editing a theme
- Ajax button “Load more” is not loading correct language version posts for logged out users
- How to code a wordpress page properly? Dashboard or unique Theme files or alternative?
- how to make wordpress remember my choice
- Meta box not displaying on the plugin page
- Getting error when accessing Customizer Page