Plugin Dependencies API
Framework for declaring and resolving plugin dependencies in WordPress.
Since: 6.5.0
Source: wp-includes/class-wp-plugin-dependencies.php
Components
| Component | Description |
|---|---|
| class-wp-plugin-dependencies.md | Static class for dependency resolution |
| hooks.md | Actions and filters |
Declaring Dependencies
Plugins declare dependencies via the Requires Plugins header:
/**
* Plugin Name: My Plugin
* Requires Plugins: woocommerce, jetpack
*/
Dependencies are listed as comma-separated slugs matching WordPress.org format.
Initialization Flow
plugins_loaded
└── WP_Plugin_Dependencies::initialize()
├── read_dependencies_from_plugin_headers()
│ ├── Parse 'Requires Plugins' headers
│ ├── Sanitize slugs via wp_plugin_dependencies_slug filter
│ └── Build dependency/dependent maps
└── get_dependency_api_data()
└── Fetch plugin info from WordPress.org API
Dependency Resolution
Plugin Activation Check
├── has_dependencies( $plugin_file )
│ └── Does plugin require other plugins?
├── has_unmet_dependencies( $plugin_file )
│ └── Are any dependencies missing/inactive?
├── has_circular_dependency( $plugin_file )
│ └── Detect A→B→A loops
└── get_dependency_filepath( $slug )
└── Find installed dependency location
Key Concepts
| Term | Description |
|---|---|
| Dependency | A plugin that another plugin requires |
| Dependent | A plugin that requires another plugin |
| Slug | Plugin identifier matching WordPress.org format (lowercase, hyphenated) |
| Filepath | Plugin file relative to plugins directory (e.g., woocommerce/woocommerce.php) |
Admin Integration
The class displays admin notices for:
- Unmet dependencies (missing or inactive required plugins)
- Circular dependencies (plugins that depend on each other)
AJAX handler validates dependencies after plugin installation.