Skip to content
This WordPress plugin gives you the option to define which plugins must be active for a particular environment only. You can activate and deactivate plugins separatedly for development, staging and production environments.
PHP
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
README.md
environmental-plugin-manager.php
readme.txt

README.md

Environmental Plugin Manager

VERY IMPORTANT: This plugin is deprecated and will not be mantained anymore. Please consider using Stage WP Plugin Manager instead.

This WordPress plugin gives you the option to define which plugins must be active for a particular environment only. You can activate and deactivate plugins separatedly for development, staging and production environments.

Description

If you develop locally, at some point you'll have some plugins active in your local environment that you don't need anymore when you deploy your code and database to staging or production. Sure, you can deactivate them before or after deploying, but you're gonna need them again to be active if you want to perform changes to your code, or update your local database from your remote one. The whole process of activate and deactivate plugins for testing purposes could be really frustrating, and sometimes a complete waste of time.

Is in that kind of situations when the Environmental Plugin Manager can be a really helpful friend. Sadly, due to the sentitive work that this plugin performs, it doesn't work right out of the box, so besides from installing this plugin, you need to do some additional work.

Please read the following instructions very carefully.

What do I need to make it work?

The Environmental Plugin Manager works on some assumptions about your workflow:

  1. You have a constant named WP_ENV_PLUGINS defined in your WordPress configuration file (often wp-config.php).
  2. The WP_ENV_PLUGINS value is one of the following: development, staging, production.
  3. The value of WP_ENV_PLUGINS is different in each of your stages. Some developers prefer to keep different configuration files for each one of their environments, or change the values of their constants based on some evaluation. For example, you could have something like this in your wp-config.php file:
if ( file_exists( dirname( __FILE__ ) . '/development-config.php' ) ) {
    define('WP_ENV_PLUGINS', 'development');
}
elseif ( file_exists( dirname( __FILE__ ) . '/staging-config.php' ) ) {
    define('WP_ENV_PLUGINS', 'staging');
}
else {
    define('WP_ENV_PLUGINS', 'production');
}

If you follow this example, note that development-config.php should not be included in your deployments to staging and production, and both development-config.php and staging-config.php should not exist in your production environment.

These assumptions are not going to change, so you need to follow this practice in order to use this plugin correctly.

How do I set up my environment?

Once you have installed this plugin (my recommendation is to do it first in development), you will notice that a new link appears under each active plugin of the list, which reads "Use for development only" (note that "development" could also be "staging" or "production", depending on your WP_ENV_PLUGINS constant). Keep that in mind and follow these steps:

  1. Activate all the plugins that you need to use for your environment.
  2. Click the "Use for development only" link for all the plugins you want to mark as development-only.

Once you click a link, that plugin will be added to the list of plugins that need to be active only in the current environment. You can click the "No more development only" link if you want to remove the plugin from the list.

How do I reset my environment after a deploy?

Once you performed a complete deploy (files and database) to a different environment, let's say from development to staging, you will see that those plugins you selected in development to be active only in that environment are still active. Fear not! This is an intended behavior, as it would be insecure to change the status of the plugins without your knowledge, so you need to do it manually by just clicking the "Reset Plugins Environment (staging)" button that you see in your admin bar. After that, you should see your development-only plugins as not active.

That's pretty much it. You can test it yourself before deploying by just changing the values of WP_ENV_PLUGINS.

Auto-reset mode

If you prefer your environments to be reset automatically, without clicking any button, you can add a second constant to your configuration file, called WP_ENV_PLUGINS_AUTO_RESET, which should be set to true. If you use this method, you won't see the reset button in the admin bar anymore (instead, it will be replaced by an environment indicator), but keep in mind that the reset process will run every time a page of your site is loaded. It shouldn't take a lot of resources, though.

If you use the auto-reset process, using this plugin as a must-use will be a lot more effective.

Will this plugin work on MultiSite installations?

If you're using MultiSite, please note that you can activate and deactivate this plugin globally, but you cannot manage plugin environments for the whole network, just for individual sites. Also, this plugin cannot manage network activated plugins. This is in the to-do list, though.

Installation

  1. git clone git@github.com:andrezrv/environmental-plugin-manager into /wp-content/plugins/, or unzip environmental-plugin-manager.zip and upload the environmental-plugin-manager folder to your /wp-content/plugins/ directory.
  2. Activate the plugin through the "Plugins" menu in WordPress.
  3. Read carefully the instructions above.

Changelog

1.1.2

  • Tested up to WordPress 3.8
  • Improvement: avoid PHP warning by removing uninstalled plugins from list of environment-only plugins.

1.1.1

  • Tested up to WordPress 3.7.1.
  • Improvement: simplify generated javascript

1.1

  • Improvement: auto reset mode.
  • Bugfix: correctly return the list of non-current-environment-only plugin.

1.0

First public release.

Something went wrong with that request. Please try again.