Safeguard
Developer Tools•

What does the Requires Plugins header do in WordPress?

The Requires Plugins header, added in WordPress 6.5, blocks activation until dependencies are active. It lists slugs only and says nothing about safety.

Safeguard Security Team
3 min read

The Requires Plugins header lets a plugin declare other WordPress.org plugins it depends on. WordPress then refuses to activate it until those are installed and active, and refuses to deactivate or delete a dependency while dependents are active. It matches slugs, not versions, and says nothing about whether a dependency is safe.

Definition

The header was introduced in WordPress 6.5. It holds a comma separated list of WordPress.org formatted slugs, such as my-plugin. The folder and file form, my-plugin/my-plugin.php, is not supported, and commas in slugs are not supported either.

/**
 * Plugin Name: Express Payment Gateway Checkout for Shop
 * Requires Plugins: shop, payment-gateway
 */

What WordPress enforces

Per the core dev note:

  • A dependent plugin cannot be installed until its dependencies are installed.
  • It cannot be activated until its dependencies are active.
  • A dependency cannot be deactivated while dependents are active.
  • A dependency cannot be deleted while dependents are installed.

If a dependency is removed through FTP or a deployment, the admin shows a notice instead.

What it does not do

AssumptionReality
It pins a versionNo, slugs only
It covers plugins outside WordPress.orgDependents can declare them, but the interface does not offer an install link and users must install them manually
It covers must-use pluginsNot officially supported at this time, per the dev note
It covers themes that need pluginsNot supported at this time
It checks securityNo

Why agencies should care

Dependencies are another path into your site. Installing one plugin can now mean the interface offers a second, and your inventory should list both. Treat a dependency as something you chose, review and update, not as an automatic add-on.

Steps for each new plugin:

  1. Read the header in the main file and note every listed slug.
  2. Review each dependency the way you would review a primary plugin.
  3. Record both in the inventory, with an owner.
  4. Check update status of the pair together, because a break in one can disable the other.

The header also helps you in an audit: a plugin that lists a dependency it never uses is a question worth asking the author.

Premium add-ons for a base plugin have a similar need. The dev note adds a filter that lets a premium version stand in for a free slug, which shows the slug match is a naming convention, not an identity check. Compare it with the Update URI header covered in our post on that field.

Example of a gap

Imagine an add-on that declares a base plugin as a dependency. The base plugin is vulnerable, and a fixed version ships. The header will not tell you, because it matches a slug and not a version. Your inventory is what shows that the base plugin is behind, and your update routine is what fixes it. Use the header as a convenience for installation order, and keep your own records for everything else.

Quick check

Does it install dependencies automatically?

The interface can offer to install WordPress.org dependencies, but dependencies outside WordPress.org must be installed manually.

Can I rely on it to keep versions compatible?

No. It matches slugs and does not compare versions.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.