That depends on what the plugin does, whether your theme relies on it and whether it is your own plugin or not.
For example, when it’s a plugin that adds a custom post type with special theme pages and stuff (like events or a portfolio), than you should integrate it in your theme using your second method.
On the other hand, when it’s a plugin from an external developer (like a slider or something), then you should let the user install that plugin in the /wp-content/plugins
folder (or copy it to the plugins folder). A nice help here is the TGM Plugin Activation, which is used by many themes these days. It recommends plugins your theme depends on and can even install and activate them automaticly. It can install them from the WP repository or from a folder when you include a .zip file in your theme somewhere (like in case of a premium plugin).
Related Posts:
- WordPress API functions not working at AJAX functions.php call
- What’s the right way to implement functions in footer.php
- when i activate my WordPress plugin cannot see customizer options or preview
- What is the correct way for a theme to support plugin UIs?
- How to call “page specific menu items” in template [closed]
- Update Multiple Post Meta for the Same Post In One call?
- Function to activate WordPress theme inside a plugin
- Which functions in theme or plugin load first
- How to make my plugin theme-independent?
- How to load a new template page according to a particular URL?
- Should I use RIPS tool to test my themes and plugins?
- How to Build a Movie Library in WordPress 3.x
- Autoload via composer in plugin interference
- Workflow and best practice for documentation [closed]
- Display future posts?
- Having separate plugins and themes folder for multi-site setup
- How can I get full attachment url from wp_get_attachment_metadata?
- unzip a folder on specific location and delete the zip file
- gallery option is not available in media upload box in costum theme option page
- Hide Theme options and Customize Admin menu
- Why is the Settings API is not saving my array of options
- 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 get current post user id
- How to Display a Plugin function (content) on frontpage using index.php
- Display post lists in 2nd paragraph
- Plugin options page with live preview?
- What are the specifics of WordPress development I need to know? [closed]
- How to create a code editor for my plugin .?
- WordPress plugin admin html being shown in Customizer iframe
- wp_footer hook only working on homepage not in other pages
- remove add new post, if there is already one post
- Redirect to another page using contact form 7? [closed]
- How do I combine a theme with a plugin
- how to force tag page layout to use same as search layout?
- Great blogs site resources/tutorial for WordPress Developers? [closed]
- How to write “alt” tag in image for wordpress code?
- Release the plugin in the WordPress repository where redux is used
- Shortcode Attributes to Return different $_POST
- How to use the CSS of the WordPress core in the development of my administration page?
- How to customize this theme? [closed]
- Don’t load the theme for a page FROM a plugin EDITED
- Extending a theme: build new features as plugin or core modules?
- Remember the Meta Value With Radio Buttons
- How do you create a re-useable HTML fragment in wordpress
- WordPress plugin with its own “site”/theme
- Yoast SEO Plug In and my Theme duplicating code. Need some feedback on what to do? [closed]
- Seperate plugin and theme files
- Xamp installed local wordpress not allowing to publish or install plugin
- require_once not working in plugin wordpress
- Elementor Sidebar not loading when PRO elements plugin is active
- Widgets are not displaying in the admin panel
- How to override any plugin file in the child theme
- 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
- Rename a folder via HTML POST request
- How can I see $post object in frontend from functions.php?
- WordPress panel is not loading after plugin activated with error: HTTP ERROR 500
- Remove action added in plugin class from theme
- Can you develop themes and plugins while using the hosting services BlueHost? [closed]
- Help Code Review – I need to write on .htaccess file from theme’s function.php
- how to add custom css at top above all css file for specific url
- Where do the section input fields values are stored in database
- Why the output of an image gallery plugin is not displayed into a page of my custom theme?
- How to copy data from user profile page (profile.php) to theme customizer
- 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]
- Breadcrumb is not generating the correct post page url
- Site is setup statically – how to make it content managable?
- How can I make a website with dynamic features with wordpress?
- How to generate a responsive output from plugin?
- How to create post comparison in wordpress
- How to add image for custom taxonomy
- Integrating WordPress Content into a jQuery Slider
- How can I convert a complete bootstrap template into a WordPress template? [closed]
- How to escape html code?
- manage_{taxonomy}_custom_column not working
- how to make wordpress remember my choice
- How to Enfroce Domain Licensing Limits? [closed]
- Meta box not displaying on the plugin page
- add_meta_box showing blank screen in my page
- How to create an Info Box on WordPress [closed]
- How to make content as required in custom post type?
- What are Seeds? [closed]
- wp.media update options and force render on uploader
- How ( and mostly at what time ) can i prevent the alternate cron from running?
- How to change custom post type pemalink Hierarcy
- List the authors that have written posts in a category
- My custom plugin did not create db tables in database
- Possible?? Pull Plugin Property Data to a Theme’s Custom Post Type
- Plugin is creating posts twice
- Update WordPress Theme System
- Why my multisite is this slow? (stats inside)
- Proper Failure of Plugin Activation
- How to add custom html to the Media > Attachment Details modal?