How Sharma just mentioned, both approaches are working well, but depending on the site type and scope and also it depends on the feature that needs to be implemented in your WordPress.
If in the future you will change the theme of your WordPress site and you just implemented a feature in your current theme, it will be lost.
How the sketch below shows, I suggest to add your design in theme or child theme (recommended) and all functionalities in a plugin
I always add shortcodes, widgets, custom post types and metaboxes in plugin because the theme will not be same forever but this way the functionalities from the plugin will be kept.
Hope this answer your question;
Related Posts:
- Tips for using WordPress as a CMS? [closed]
- Custom Post Type Templates from Plugin Folder?
- What Are Security Best Practices for WordPress Plugins and Themes? [closed]
- How to get the active theme’s slug?
- Plugin (or Theme) containing its own Plugins?
- Disable author pages for specific users
- Set active theme via URL
- Migrating a File from Plugin to Theme and changing its path → instead create a REST endpoint
- Why users disable the WordPress update?
- dequeue not work
- I can’t upload a new wordpress theme from a zipped file
- Translating plugin inside the theme [closed]
- Woocommerce sidebar not loading in theme
- Include Max mega menu Plugin into theme
- How to remove all javascript in a theme wordpress?
- wordpress theme backend admin only
- Unable to install theme recommended plugins on Multisite
- Plugin Deactivate Self on Activation Errors
- How To Clean The Malware Infected & Hacked WordPress Websites? [duplicate]
- How to get current post user id
- Two (or more) looks, with one set of content
- Re-naming a theme/child theme whilst maintaining updates
- Unable to upload wordpress plugins
- The problem with WordPress Importer
- How to disable CSS rule in Twentythirteen style.css?
- WSOD after upgrading to 3.1
- Is there any kind of theme on WordPress to sell my own movies?
- Linux Permissions and Ownership for WordPress
- Fatal error: Call to undefined function cmsms_theme_page_layout_scheme()
- Homemade plugin while using Themify Ultra
- Theme/Plugin installation through url on button click
- How can I position ShareThis buttons manually when using the plug-in? [closed]
- Does WP delete deprecated plugin/theme files on plugin/theme upgrade?
- My single.php page does not show the related data to the post which is clicked
- Where are theme codes located for WordPress?
- Basic gallery plugin suggestion [closed]
- using do_shortcode
- How to write “alt” tag in image for wordpress code?
- How to load different homepage on Mobile.?
- How to get menu location in wp_update_nav_menu hook
- WordPress plugin won’t show on some themes
- Which wordpress theme is compatible Optima Express theme (real estate inventory) plugin?
- How to Include File from Plugins into Template?
- How to execute plugin and theme updates from a web hook / endpoint?
- How to translate WP Blog (search, category etc.)?
- How do I set up XAMPP to allow me to download plugins and themes?
- Licensing options for WordPress Plugins
- Extending a theme: build new features as plugin or core modules?
- Is there a Image Gallery which will load all my posted Images like twitter’s image grid?
- What is the most efficient way of adding additional functionaliy for admin only
- How do I work with the SlideDeck plug-in?
- “User need to be logged in in order to make a booking” issue
- Custom Plugin scripts from admin working in frontend
- Edit all $wp_scripts at once to $in_footer = false
- Scrape key check failed. Please try again
- Disable WordPress Theme Browser and Plugin Browser
- Sold out Label for variable products which are partially sold out
- Create automatic latest version link
- How to Access a file that is inside a plugin’s dir from the theme’s `functions.php` file
- Remove a div class with condition
- dokan edit functionality
- how to split and upload a theme on wordpress?
- Hide Plugin Custom Post Type Menu Link
- Hooking into the HTML header container
- Set up new WordPress domain using unclear files
- Removing Plugin Action via Theme for Non-admins
- Genesis Child Theme – Customize body
- Unable to activate themes on localhost
- How to roll back WordPress version or prevent migration from forcing update?
- Multisite converted to Single Site can’t add new plugins or new themes
- how to add navigation icons in specific template?
- How to make a website with two types of logins , Sellers and buyers?
- why my wordpress dont have toolbar like, plugin, themes and other?
- Shows warning when enable “wp_gallery_custom_links” plugin with Themify Builder
- Why all my wordpress sites keeps telling me that everything is up to date at /wp-admin/update-core.php?
- How can I save cookies to members
- How to add separator between default and custom panels in WordPress customizer?
- Speed issues because of CSS & JavaScript
- Using activated_plugin to run code
- Ajax specific template not loading in replacement of index.php
- Woocommerce: deleted single-product.php, everything still works. How is it possible?
- Theme styling for plugins
- pluggable function in theme, to be overridden by plugin
- Creating themes using the one Plugin (Toolkit)
- How to tell if a script is being executed from a plugin, a theme or a child theme in WordPress?
- jquery-issue: cannot load the basic jquery
- Template from scratch: Sidebars not showing widget
- Why do I get this “peer’s certificate issuer not recognised” error when trying to install a theme?
- Site is setup statically – how to make it content managable?
- how to change location of the plugins & wordpress themes folder
- Extra Text in Home URL
- Javascript as Jquery Function Call?
- Self-hosted Plugins & Themes store with auto-updates? [closed]
- Any plugin/theme available which suits my requirement? [closed]
- Two sites one PC
- How to escape html code?
- Elementor with system colors instead of kit colors [closed]
- WordPress theme is not displaying the correct home page in the Pages section
- How to create new title and its description inside a section in WP Customizer?
- Custom page template from plugin does not work with pre-installed themes in WordPress 6.6.1
