You can take a look at TGM-Plugin-Activation plugin. It should give you good starting point. As written in the documentation:
TGM Plugin Activation is a PHP library that allows you to easily
require or recommend plugins for your WordPress themes (and plugins).
It allows your users to install and even automatically activate
plugins in singular or bulk fashion using native WordPress classes,
functions and interfaces. You can reference pre-packaged plugins,
plugins from the WordPress Plugin Repository or even plugins hosted
elsewhere on the internet.
Related Posts:
- wordpress on localhost lamp doesn’t let me install plugins
- Prompted for FTP details even with FS_DIRECT set to true
- What plugins do you commonly install on a fresh WordPress install?
- How can I create a bash install script for my WordPress sites setup (WP+plugins+theme)?
- Combine multiple plugins into one?
- How to automatically install default WordPress plugins?
- Does plugin uninstall always put WordPress back into original state?
- What is the purpose of the “Hello Dolly” plugin?
- How to properly secure my WordPress installation?
- WordPress plugin installation error
- Make plugin uninstalable on older versions of WordPress
- Please select a file error
- Install plugin remotely
- What is $tab in `install_plugins_{$tab}` hook?
- Plugin to install a plugin
- Distributing and packaging plugins
- Getting a 404 when trying to load /wp-admin/plugin-install.php
- Can’t use the built-in wordpress install/upgrade plugin feature [closed]
- How to check what plugins used to be on a WordPress installation?
- Error uploading plugin zip file
- What causes an Unexpected HTTP Error within install plugins?
- How does WordPress process plugin installations?
- CMB2 installation – cannot get it to work
- Theme and plugin install or update display error in localhost
- Hook (or other way) to find out when another plugin is activated / installed
- Pushing out updates to multiple installs?
- Installing a plugin on a premium site [closed]
- get 404 when accessing wp-admin/plugin-install.php
- Create a multisite network for an existing installation
- Theme/Plugin installation through url on button click
- Why this function not working for install database on plugin activation
- Import sql data from a large file when installing plugin
- Redirect to another page using contact form 7? [closed]
- Get plugin download URL from slug
- Modify wp_installed_email / wp_new_blog_notification
- Installing wordpress on a subdomain of an already existing static website
- plugin generated 751 characters of unexpected output during activation
- WordPress Plugins Don’t Automatically Update
- Can plugin2 uninstall plugin1 at the very beginning of plugin2’s installation?
- What are the correct permissions so WP doesn’t ask for FTP credentials if installing plugin?
- Problem installing plugin: unexpected T_STRING, expecting T_FUNCTION
- To perform the requested action, WordPress needs to access your web > server
- WooCommerce: after install hook
- WordPress unable to write files in the server
- Programmatically install and activate child-theme
- Installing plug ins on a wordpress hosted site
- Can’t Install/Upgrade Plugins Through WordPress
- Unable to install plugins
- Plugin Add New Installer failing
- Installing a Plugin ( Which is already manually uploaded )
- All new plugins generating 311 chars of unexpected output?
- Upload WordPress Plugin from ZIP Broken – Returns Symbols Squares & question marks
- Restoring a WordPress site
- Can’t install plugins after updating to WordPress 4.9
- WordPress Plugin Install / Update Problem
- WP-admin plugin installation via FTP silently fails on shared hosting
- Plugin install error: Installation failed: The package could not be installed
- database – multiple wordpress installations using same database – can they share plugin settings?
- How to install jquery dotdotdot plugin for WordPress?
- WordPress menu and plugin installation problem
- Hook into install email
- Is there going to an issue running different features of WP site in different subdomains?
- Moving to WordPress Premium versus a hosting provider
- Upacking the package… stalls, but installs plugin
- How to add plugin activity in the menus?
- What possible reasons can cause my plugin not to be listed in the plugin search in the back-end of wordpress installs?
- No feedback when installing plugins or updating
- Why do I get this “peer’s certificate issuer not recognised” error when trying to install a theme?
- Using one-click plugin upgrade feature securely on suexec server
- Can I install plugins manually on WP.com? [closed]
- Google analytics not working on WordPress
- WordPress – connection information
- Plugin installation works only with FTP – how to debug?
- automation of plugin installations
- Allowing users to install a predefined bundle of plugins and themes with one action
- Render Modula Plugin Shortcode On Ajax Request
- Saving widget options from class method
- This WordPress plugin isn’t creating links correctly
- Basics of changing plugin output
- “After file loaded” action
- Show Homepage (only) Hits Count
- WordPress jQuery Post – Amending Variable Value Within Function Command
- how to define a html folder to make it work with WordPress commands
- Asking help regarding potential malware
- How to find where an image is used by it’s url
- checkout stripe with plugin contact form
- Disqus comment system not show
- Custom plugin which downloads updates from custom endpoint, extracts new version zip into a new name
- How to cache for multi server environment? Memcached, Redis or other?
- Page takes on two different formats
- Cant visualize protected password portfolio elements
- Creating a comments voting system
- Rewrite URL to plugin file
- Multiselect value in wp_query
- Retrieve post thumbnails
- Why are only inactive plugins showing?
- how to add “alt” for all image in wordpress
- Contact form 7 – How to send mail to two different E-mail Address [closed]
- Seo Problems in My meta Discription [closed]
- Add new Plugin or Delete option Not Showing and Also Theme delete option not showing