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?
- 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
- How to customize woocommerce related products? [closed]
- How to automatically add and show(open) all the product attributes?
- Woocommerce different URL for every table placed in the restaurant
- how to use ajax to display from database and load more in wordpress plugin
- Storing a password for use with a WordPress plugin
- Update User Role
- Why my Plugin keeps deactivating automatically?
- How to output CMB2 select options from repeated groups select elements?
- do_action() hook into load-(page)
- Plugin allowing users to add articles to a library
- Insert Message before content of after title
- Which plugin can do horizontal scrolling of RSS feeds in WordPress [closed]
- Chrome Dev Tools console says every page in my blog has link to http://maps.google.com [closed]
- How to rename WP plugin?
- Gathering all Custom Post Type posts in to array/object the proper way
- Redirect unloggedin users
- how to upload folders and files to google storage bucket?
- WordPress arrows dissapeared strange signs
- Getting error Parse error: syntax error, unexpected ‘add_filter’ (T_STRING), expecting function (T_FUNCTION)
- jquery-issue: cannot load the basic jquery
- How to remove post redirects
- Unwanted Links and Spam WordPress Pages and Posts
- Displaying single Instagram images as a tile
- Unable to pass arguments from plugin form to filter hook using ajax, the data is transferring via ajax but unable to pass as arguments in filter hooks
- How to update changes to multiple sites at the same time
- Why am I getting an error when requiring a file in my plugin?
- restore backup full content or just specific folders