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.

How to add custom configuration

add_filter( 'wpcfm_configuration_items', 'my_configuration_items' );
add_filter( 'wpcfm_pull_callback', 'my_pull_callback' );


/**
 * Register custom settings
 *
 * @param array $items Associative array of configuration items
 * @return array
 */
function my_configuration_items( $items ) {
    $items['myprefix_data'] = array(
        'value'     => 'YOUR CONFIGURATION DATA',
        'label'     => 'The value label', // optional
        'group'     => 'The Group Name', // optional
    );
    return $items;
}


/**
 * Tell WP-CFM how to import custom settings
 *
 * $params['name']          The option name
 * $params['group']         The option group
 * $params['old_value']     The current DB value that will get overwritten
 * $params['new_value']     The new DB value
 */
function my_pull_callback( $params ) {
    if ( 'myprefix_data' == $params['name'] ) {
        // Import the data
    }
}

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

Configure once, deploy multiple times

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.

Great

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 5 reviews

Contributors & Developers

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

Contributors

Translate “WP-CFM” into your language.

Interested in development?

Browse the code or subscribe to the development log by RSS.

Changelog

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