Plugin Dependencies Plugin
Plugin dependency management
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.
Links: Plugin News | Author’s Site
Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.
Screenshots
Activation prevention
Cascade deactivation
FAQ
Error on activation: “Parse error: syntax error, unexpected…”
Make sure your host is running PHP 5. The only foolproof way to do this is to add this line to wp-config.php (after the opening <?php
tag):
var_dump(PHP_VERSION);
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.
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. Props jrf.
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. Props jrf.
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