One way is to use TGM, as Bhupen already mentioned.
But if you want to do it in a cleaner, more “wordpressy” way, then you can:
1. Use, but don’t require
You can write your theme in such way, that it doesn’t require given plugins, but it uses them if they’re available.
Good example of such approach is usage of WP-PageNavi plugin. You can check if this plugin is available and use it for pagination. But if it’s not available, you can use native WP functions.
This way you give your user choice if he want’s to use given plugin. Sometimes it’s very important due to some conflicts, and so on.
2. Notify admin which plugins are recommended
And if you want to make it easier for you/user to install all recommended plugins, you can add some admin notice that will contain a list of recommended plugins. But please remember to allow to hide such notice.
Related Posts:
- Between functions.php (theme), widgets, and plugins, which is loaded first?
- Is there any sort of theme dependency management?
- Add Plugins to WordPress Theme
- wp_enqueue_scripts not working in custom theme
- What is the correct way for a theme to support plugin UIs?
- How to call “page specific menu items” in template [closed]
- Create WooCommerce Product Category Programmatically
- Function to activate WordPress theme inside a plugin
- Seeking clarification on page request life-cycle
- Get info (url) from already enqueued styles
- How do I make my wordpress page more friendly for mobile viewers?
- WordPress Enqueue Script Chaos (jQuery & Foundation.js)
- login to wordpress with Get variables instead of Post
- Should I add sharing buttons using a plugin or directly in my theme files?
- Check javascript file Proper way in functions.php
- Should I use RIPS tool to test my themes and plugins?
- How to Build a Movie Library in WordPress 3.x
- resize only height using wp_get_image_editor
- Having separate plugins and themes folder for multi-site setup
- How can I get full attachment url from wp_get_attachment_metadata?
- Translating plugin inside the theme [closed]
- unzip a folder on specific location and delete the zip file
- Editing Theme to apply Co-Authors Plus
- gallery option is not available in media upload box in costum theme option page
- How to limit WordPress pages during updates?
- Why are some of my thumbnails not being generated?
- Why is the Settings API is not saving my array of options
- Built in audio player?
- How to integrate plugin in WordPress theme
- How do you remove plugin edit option?
- Override the filter from plugin in child theme
- WordPress logo upload option in theme panel
- Network: retrieve a list of latest posts
- how to load the language file in plugin?
- WooCommerce get_price returning wrong price when used via ajax
- Open Post Thumbnail in New Child Theme File in WordPress
- Different UI in WordPress
- Why does my functions.php cause white-screen and media-library issues?
- wp_get_post_terms is difference obj model than the one in rest api response
- how to add a button next to the wordpress view button?
- Best place for short bio,image and button [closed]
- What are the specifics of WordPress development I need to know? [closed]
- WordPress shows error related to allow_url_fopen
- How to create a code editor for my plugin .?
- How to show only next post pagination link using wp_link_pages()
- wp_footer hook only working on homepage not in other pages
- Jquery NoConflict Problem
- 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 multiply a post to test internal search results?
- Use different single.php file based on condition
- How can I support plugins in a custom theme?
- Redeclare function after plugin activation
- Woocommerce singe product custom gallery output works just on the first slide
- Remove Pagination for Product Category Pages WooCommerce
- How can I use my custom wordpress theme on two websites? [closed]
- Widget for specific category
- How to customize this theme? [closed]
- WordPress API functions not working at AJAX functions.php call
- Don’t load the theme for a page FROM a plugin EDITED
- Extending a theme: build new features as plugin or core modules?
- Hardcode a form in Contact Form 7 [closed]
- Remember the Meta Value With Radio Buttons
- how to design change in woocommerce cart page and all other page also by theme? [closed]
- WordPress plugin with its own “site”/theme
- Override methods in Yoast SEO breadcrumb class
- Removing the custom_image_header from wp_head
- Xamp installed local wordpress not allowing to publish or install plugin
- Elementor Sidebar not loading when PRO elements plugin is active
- How would I get the new plugin version on this function?
- Newbie problem with adding include wp_footer
- Conditional Homepage for logged in user
- How can I see $post object in frontend from functions.php?
- How to get checkbox by default true in metabox?
- when i activate my WordPress plugin cannot see customizer options or preview
- When the user entered an unauthorized url redirect to login page
- Show content from plugin on index
- 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
- twitter widget loads properly in all themes except my own theme?
- Directory structure for plugin changes
- How to show post attachment image
- Active Plugins for current blog in WP Multisite Network? [duplicate]
- Disqus plugin outputs script as literal text
- How to generate a responsive output from plugin?
- How to work email subscribe in WordPress?
- 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
- How to create new title and its description inside a section in WP Customizer?
- I want to move the one click accesbility button on bottom of my website screen,
- Automatically install bundled plugins during theme activation?