Simple file-based plugin activation control for WordPress
Lock down the activation state of individual plugins based on environment with minimal effort.
Create a YAML file that defines the plugin activation state you want to enforce. Name it whatever you wish and put it wherever you want (ideally outside of the webroot). Add this file to your project's repository.
Example manifest file:
# top level keys are the environment some_environment: enable: - someplugin/someplugin.php disable: - someotherplugin/someotherplugin.php # supports multisite network-enable: - someplugin/someplugin.php network-disable: - someplugin/someplugin.php # 'global' is a special key that you can use to apply to all environments global: enable: - woocommerce/woocommerce.php - wpmandrill/wpmandrill.php development: disable: - wpmandrill/wpmandrill.php
composer require primetime/wp-plugin-activation-manifest
Execute the mandate
require('vendor/autoload.php'); // ... // after WordPress is loaded - eg: within an mu-plugin // .. \PrimeTime\WordPress\PluginManifest\Activation::set('path/to/plugin-manifest.yml', getenv('WP_ENV'));
In the example above,
WP_ENV is an environment variable defining the name of the environment (eg: development, staging, production).
This environment name should match to a top-level key in the yaml file.
Environment configuration is applied after the
global configuration and will take precedence over it.