6

I currently:

  • Have identical environments for development (vagrant) and production (elastic beanstalk).

  • Use git push to deploy code from the development to the production environment.

  • Create posts and pages using the production environment's WordPress.

  • Import the production database into the development database to stay in sync.


While I know this strategy works, I feel lost when thinking about how to best manage the installation, activation and — most importantly — synchronization of WordPress' Plugins.

Installing plugins makes sense... Download. Commit. Deploy. And all environments will have the plugin available.

Activating and synchronizing plugin settings isn't as clear... Do I need to manually activate and setup each plugin on all environments, or can that be synced between them?

I know each plugin can have unique way of storing data, but I would think with both file and database synchronization everything would match up. Am I missing something?

3

The reliable two–way sync is simply not something that have happened in WordPress.

The typical way is in line with what you are doing — pulling a copy of production database into development environment. Note that this is commonly the one direction it goes. It's much more problematic to try sync development back to production.

As far as plugin configuration specifically is concerned:

  1. Call it good enough and treat production as authoritative state
  2. Have codified install/update procedures, which dictate desired state of plugin options
  3. Override plugins' options storage and/or internal hooks

The practical choice to go with would depend on specific plugins used and how complicated the state of their settings to be captured and/or reproduced is.

  • Thank you Rarst for your detailed response. Would you mind elaborating on the third suggestion you listed? I'm not quite sure what you meant by that. – Rich Apr 15 '15 at 20:09
  • Plugin settings are typically stored in options and/or pass through plugin's own filters. In many cases you can effectively override and hardcode that data using filters and ignoring the state captured in database. – Rarst Apr 15 '15 at 20:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.