afragen/wp-dependency-installer

Library that helps WordPress plugin dependency management.

Fund package maintenance!
afragen

Installs: 67 004

Dependents: 7

Suggesters: 0

Security: 0

Stars: 201

Watchers: 14

Forks: 33

Open Issues: 3

4.3.13 2023-05-18 18:49 UTC

README

This is a drop in class for developers to optionally or automatically install plugin dependencies for their own plugins or themes. It can install a plugin from wp.org, GitHub, Bitbucket, GitLab, Gitea, or a direct URL.

Comprehensive information regarding WP Dependency Installer is available on the wiki.

See also: example plugin.

Description

You can use composer to install this package within your WordPress plugin / theme.

Please ensure you are using the latest version of this framework in your composer.json

  1. Within your plugin or theme root folder, run the following command:
composer require afragen/wp-dependency-installer
  1. Then create a sample wp-dependencies.json file
[
  {
    "name": "Git Updater",
    "host": "github",
    "slug": "git-updater/git-updater.php",
    "uri": "afragen/git-updater",
    "branch": "develop",
    "required": true,
    "token": null
  },
  {
    "name": "Query Monitor",
    "host": "wordpress",
    "slug": "query-monitor/query-monitor.php",
    "uri": "https://wordpress.org/plugins/query-monitor/",
    "optional": true
  },
  {
    "name": "Local Development",
    "host": "wordpress",
    "slug": "local-development/local-development.php",
    "uri": "https://wordpress.org/plugins/local-development/",
    "required": true
  }
]

You will then need to update wp-dependencies.json to suit your requirements.

  1. Finally add the following lines to your plugin or theme's functions.php file:
require_once __DIR__ . '/vendor/autoload.php';
add_action( 'plugins_loaded', static function() {
  WP_Dependency_Installer::instance( __DIR__ )->run();
});

WP_Dependency_Installer should be loaded via an action hook like plugins_loaded or init to function properly as it requires wp-includes/pluggable.php to be loaded for wp_create_nonce().

  1. (optional) Take a look at some of built in Hooks and Functions to further customize your plugin look and behaviour:

That's it, happy blogging!

Development

PRs are welcome against the develop branch.