WP Requirements

A helpful library for checking the prerequisites when activating / running a WordPress plugin.

About

WP Requirements is a library that helps WordPress developers to check whether the environment meets their plugins’ requirements.

Currently, you can use the library to verify:

Installation

The WP Requirements Library can be included in your project by simply downloading to a folder, by adding as a Git submodule, or with the help of Composer.

Composer

The library is available on Packagist.

When you run composer require bemailr/wp-requirements, Composer normally installs the library into the /vendor/bemailr/wp-requirements/ folder. We will assume this path in all examples of the documentation.

Example of composer.json for your plugin

{
  "name": "me/my-plugin",
  "description": "My Plugin",
  "type": "wordpress-plugin",
  "require": {
    "bemailr/wp-requirements": "^2.0.0"
  }
}

Using the Library

The basic usage schema

This is only a schema. The real code should use WordPress hooks and do some additional checking, as shown in this example.

require_once dirname( __FILE__ ) . '/vendor/bemailr/wp-requirements/wpr-loader.php';
if ( ! WP_Requirements::validate( __FILE__ ) ) {
    return;
}

A slightly more advanced example:

require_once dirname( __FILE__ ) . '/vendor/bemailr/wp-requirements/wpr-loader.php';
$requirements = new WP_Requirements( __FILE__ );
if ( ! $requirements->valid() ) {
    // Here you can do some additional actions.
    // ...

    // Default action.
    $requirements->process_failure();
}

Defining the requirements

There are two methods to define your plugin’s prerequisites:

Both methods work the same way, so use the one you like.

PHP array

The second parameter of the constructor is an array of requirements:

$requirements = new WP_Requirements( __FILE__, array(...) );

The plugin loader example shows a sample of such array passed to the class constructor.

JSON configuration file

If the array of prerequisites was not passed to the constructor, the WP Requirements Library looks for a file named wp-requirements.json in the plugin folder, eg. /wp-content/plugins/your-plugin/wp-requirements.json;

You can change this location with the wp_requirements_configuration_folders filter.

The configuration file example can be found here. Copy it to your plugin’s folder and modify as necessary.

Verifying required plugins

The configuration snippets below tell WP Requirements that:

PHP

'plugins' => array(
  'woocommerce/woocommerce.php' => '2.6',
  'wpglobus/wpglobus.php'       => true,
  'polylang/polylang.php'       => false,
),

JSON

"plugins": {
  "woocommerce/woocommerce.php": "2.6",
  "wpglobus/wpglobus.php": true,
  "polylang/polylang.php": false
}

The global configuration parameters

Name Default Value Description
version_compare_operator >= Change the default comparison operator to any value supported by the version_compare() function.
not_valid_actions array( 'deactivate', 'admin_notice' ) Define the actions to be performed if the requirements are not met. Depending on your code, you may want to deactivate the plugin, or keep it active doing something limited.
show_valid_results false In the admin notice, show all the results, whether requirements are met or not.
requirements_details_url (empty) The URL that will be displayed as a link instead of listing the unmet prerequisites. Useful if the list can be long and/or if you want to provide the detailed information on a separate page.