WordPress plugin dependency management.
PHP Shell
Latest commit b4e6be7 Jan 10, 2015 @westonruter westonruter Merge pull request #45 from xwp/feature/syntax-highlight-readme-md-co…
…deblocks

Use pre[lang] tags for code blocks in readme.txt for convetsion to GitHub Markdown code blocks

readme.md

Plugin Dependencies

Plugin dependency management

Contributors: scribu, xwp, kucrut, jrf
Tags: plugin, dependency
Requires at least: 3.1
Tested up to: 4.0
Stable tag: trunk (master)
License: GPLv2 or later

Build Status

Description

This meta-plugin allows regular plugins to specify other plugins that they depend upon.

Example:

/*
Plugin Name: BuddyPress Debug
Depends: BuddyPress, Debug Bar
*/

What this does:

  • Disables activation of BuddyPress Debug until both BuddyPress and Debug Bar are already activated.
  • When either BuddyPress or Debug Bar are deactivated, BuddyPress Debug will also be deactivated.

= Enriching dependency information =

Unfortunately, very few plugins currently contain dependency information. If you'd like to enhance the information available to this plugin, you might want to install the Known Plugin Dependencies plugin which acts as an add-on to this one.

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

Frequently Asked Questions

What happens if a user doesn't have Plugin Dependencies installed?

Nothing. The Depends: header will simply be ignored.

Can I have grand-child plugins?

Yes, the dependency chain can go as deep as you want.

Defining virtual packages

Say you have some useful functions that you would like to package up as a library plugin:

/*
Plugin Name: Facebook Lib
Provides: lib-facebook
*/

Now, dependant plugins can specify 'lib-facebook' as a dependency:

/*
Plugin Name: Cool Facebook Plugin
Depends: lib-facebook
*/

Besides being more robust, the Provides: header allows multiple plugins to implement the same set of functionality and be used interchangeably.

Screenshots

Changelog

1.3

  • Add Dependency Loader class. Props kucrut.

  • Make it work with bulk actions. Props jrf.

    • Usability: Remove bulk action checkboxes for plugins with unsatisfied dependencies on single site plugins page within a network.
  • Guard dependencies even when a plugin is (de)activated outside of the plugins page context. Props jrf.

  • Fix compatibility with multi-site. Props jrf.

    • New: Show dependencies in the network admin plugins page.
    • Bug fix: network activated plugins were not recognized (at all) and deactivating one would throw PHP notices.
    • Bug fix: network activation action was not correctly unset if dependencies were not met (WP 3.4+).
    • Bug fix: network deactivation would only check dependencies for the network and the main site, not for the other sites in the network
    • Improved: logic for recognizing whether dependencies have been satisfied.
    • Usability: On single site plugin page in a multisite network: added a "network" textual indicator for dependencies which were met by a network activated plugin.
    • Usability: On single site plugin page in a multisite network: the required plugin names now only link to the plugin if the current user can activate that plugin.
    • Usability: Improved information to single site admins when dependent plugins have been deactivated because a required plugin has been network deactivated - show all deactivated plugins since last admin login, not just what happened in the last change round.
    • Usability: Notifications about deactivated plugins are now shown on any admin page which will help admins notice changes made by this plugin earlier in case of a network deactivation.
  • Clean up coding standards. Props kucrut, jrf.

  • Improve style of plugin dependency notices. Props jrf.
  • Usability: Add plugins deactivated by this plugin to the 'recently active' plugins list. Props jrf.
  • Add Dutch translation. Props jrf.

1.2.1

1.2

  • added ability to use plugin names as dependencies
  • more info

1.1

  • added 'Provides:' header
  • replaced 'Dependencies:' with 'Depends:'
  • more info

1.0.1

  • fixed critical bug when not running MultiSite
  • better network activation handling

1.0

Upgrade Notice

1.3

  • Upgrade highly recommended - Plugin now fully compatible with multisite and dependency management will now also work outside of the plugins page context, including for bulk actions.