primetime/wp-plugin-activation-manifest

Simple file-based plugin activation control for WordPress

v1.0 2018-10-10 10:55 UTC

README

Lock down the activation state of individual plugins based on environment with minimal effort.

Usage

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
    

Install 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.

That's it!