WP-CFM

Description

WP-CFM lets you copy database configuration to / from the filesystem. Easily deploy configuration changes without needing to copy the entire database. WP-CFM is similar to Drupal’s Features module.

How will WP-CFM benefit me?

  • Less need to copy over the entire database.
  • No more rushing to figure out which settings you forgot to change.
  • Easily track and version configuration changes via git, subversion, etc.

Which data does WP-CFM support?

  • WP settings (wp_options table)
  • Multisite settings (wp_sitemeta table)
  • Taxonomy terms
  • Custom Field Suite field groups

Terminology

  • Bundle – A group of (one or more) settings to track
  • Push – Export database settings to the filesystem
  • Pull – Import file-based settings into the database

WP-CLI

WP-CFM supports [pull / push / diff] of bundles from the command-line using WP-CLI:

wp config pull [bundle_name]
wp config push [bundle_name]
wp config diff [bundle_name]
wp config bundles
wp config show_bundle [bundle_name]

You can optionally set bundle_name to “all” to include all bundles.

Append the --network flag to include multisite bundles.

Filters

See the filters reference page at the GitHub Wiki.

Screenshots

  • The admin management interface
  • Editing a configuration "bundle"
  • Diff viewer to track changes within a bundle

Installation

  1. Download and activate the plugin.
  2. Browse to Settings > WP-CFM to configure.

Reviews

April 11, 2021
Great plugin guys! Makes life so much easier. One request: would it be possible to add an ajax search field to search wp_options? Finding the right option can be difficult on sites with lots of wp_options entries.
March 24, 2020
This plugin, especially in terms of exporting and importing various Woocommerce settings and Woocommerce Addons, this plugin is so so useful.
September 3, 2016
Awesome plugin for tracking configuration in version control. I auto import bundles in my test and live environments when deploying from development which saves me a ton of time from having to make the same configuration updates over and over.
September 3, 2016
Great plugin, works as advertised. I'm using the plugin to deploy settings and keep them under version control. If it could just save advanced custom fields and page/sub-page structure it would be essential on any site
Read all 9 reviews

Contributors & Developers

“WP-CFM” is open source software. The following people have contributed to this plugin.

Contributors

“WP-CFM” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “WP-CFM” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.7.2

  • Improved: Fix Warning invalid argument supplied on CLI command.

1.7.1

  • Improved: Cache results of WPCFM_Registry::get_configuration_items() (props @fariasf).
  • New: Added --format parameter for the bundles command to retrieve bundle information from the CLI (props @gilzow).
  • Improved: Use home_url() instead of WP_HOME since this one isn’t always guaranteed to be set (props @kyletaylored).
  • Fix: Warning invalid argument supplied for foreach() on CLI command (props @adnoh).

1.6

  • Improved: Following WordPress best practices. Including CSS and JS scripts for plugin admin page using admin_enqueue_scripts action.
  • New: Filters wpcfm_multi_env and wpcfm_current_env to activate multiple environments functionality.
  • New: Detects Pantheon hosting automatically and activates the multiple environments functionality. Registers out of the box dev, test and live for Pantheon.
  • New: Filter wpcfm_is_ssot adds capability to set configuration bundles as the Single Source of Truth (SSOT), rather than the database, for all tracked options.

1.5.1

  • Fix: Tested with latest WordPress 5.2.1. Removing the plugin outdated notice at WordPress.org plugin repository.

1.5

  • New: Toggle to show/hide already registered options (props @mickaelperrin)
  • New: wpcfm_config_format filter allow export configuration as YAML files (props @mickaelperrin)
  • New: Check configuration file exist before import (props @mickaelperrin)
  • Fix: File bundle properties are not checked (props @mickaelperrin)
  • Fix: Import wp-cfm settings (props @mickaelperrin)
  • Fix: Bad PHP Version comparison (props @mickaelperrin)
  • Fix: Undefined constant WPCFM_CONFIG_FORMAT_REQUESTED (props @mickaelperrin)
  • Improved: Better Custom Field Suite plugin detection (props @s3ththompson)

1.4.5

  • Fix: only the first taxonomy was showing in the admin UI (props @Rebenton)

1.4.4

  • New: wpcfm_config_dir filter (customize config dir)
  • New: wpcfm_config_url filter (customize config url)
  • Fix: issue with .dot files in config directory
  • Fix: PHP7 warning

1.4.3

  • Fixed: WP-CLI diff (props @mortana42)

1.4.2

  • Fixed: pulls broken due to taxonomy bug
  • Fixed: Custom Field Suite support
  • Improved: code formatting

1.4.1

  • Wrapped CFS integration into a class
  • Removed unnecessary diff code
  • Code formatting tweaks

1.4

  • New: support for taxonomy terms
  • Improved: better usability for response messages
  • Improved: replaced multiselect UI tool
  • Fixed: diff viewer highlighting issues
  • Added screenshots

1.3.2

  • wp-cli diff support (props @joshkoenig)
  • wp-cli show bundles support (props @joshkoenig)
  • wp-cli get bundle details (props @joshkoenig)

1.3.1

  • Fix for bundle deletion
  • Better WP-CLI network support
  • Now using “wp_mkdir_p” to check for writable config folder
  • Updated translations

1.3

  • Multisite support (props @alfreddatakillen)
  • Added download link for each bundle (props @alfreddatakillen)
  • Notification when the same option is stored in multiple bundles
  • Subclasses can be accessed as base class variables
  • Fix: ensure that “old_value” exists
  • Updated translations

1.2

  • Made “diff viewer” close button appear clickable
  • Fixed bug with Custom Field Suite and loop sub-fields

1.1

  • Added support for a config option label
  • Added get_facet_by_name helper method
  • Admin UI now recognizes file bundles
  • Better error handling

1.0.5

  • Synchronize bundle config options list with file during Pull

1.0.4

  • Added i18n support
  • Fallback for JSON_PRETTY_PRINT when PHP < 5.4
  • Fixed PHP notices when doing Pulls
  • Excluded some unnecessary CFS config options

1.0.3

  • Added relative plugin URL (props @tormjens)
  • Added subtle admin screen animations
  • Better file error handling
  • CFS integration – each field group now has its own configuration item
  • Added wpcfm_pull_callback filter
  • Moved the “all” bundle handler from the ajax class to readwrite

1.0.2

  • Fix: error when Custom Field Suite isn’t active

1.0.1

  • Custom Field Suite integration