VersionPress 3.0 has been released officially on 28th of April and is a prime example of what transitioning to open source can bring to the table of application features and improvements.


There is a bunch of new options and improvements which are worth mentioning like:

  • Filtering – You are now able to search changes by authors, dates, commit messages, WordPress actions, etc.
  • Bulk undo – Changes to the website that involved multiple actions like trashing a post and then deleting it forever can be reverted by selecting both and restoring the post.
  • Environment tracking VersionPress 3.0 tracks from which environment a change originated. This provides another way of easily orienting yourself in the changes on your website.



Some core version improvements show that a strong base is an important part of a stable platform:

  • Serialized data is diff- and merge-friendly which improves IDs in sticky posts and widgets.
  • Date modified fields are handled correctly – Merge conflicts from tracking post_modified and post_modified_gmt fields for posts before the installation of VersionPress are now avoided.
  • Changes on adjacent lines no longer create conflictsWhen different users update adjacent lines, merging the changes they made no longer creates a conflict.
  • Shortcodes with IDs work across environments Shortcodes will now update IDs correctly across environments. A new *-shortcodes.yml has been developed to support this change.
  • Database writes – Database related writers like view counters, plugin actions etc now do not create excessive amounts of commits but instead have a configurable interface with a default value of once per hour. This is implemented in order to remove commits flooding.
  • Configurable entity handling Some entities just should not be part of the repository such as transient options or spam comments. VersionPress 3.0 introduces a better, extensible ignoring mechanism to deal with such entities.
  • Ignoring of specific database columns – As the name suggests, you can now fully ignore specific database columns or ignore dynamically computed by PHP functions values.
  • Initial support for custom directory layouts – WordPress location, wp-content, plugins or uploads directories are now customizable. However, the structure needs to be defined before VersionPress is activated.
  • Data updates via query() are now understood – Previously, VersionPress handled data updates via the insert(), update() and delete() methods which support 99 % of the changes. Now, that last 1 % is added by supporting the query() method.
  • Common config – as most of the information in wp-config.php is environment-specific this file was ignored. However, values like WP_CONTENT_DIR and WP_PLUGIN_DIR add a config file named wp-config.common.php which is committed into the repository and required from the standard wp-config.php file.
  • General reliability improvements – improvements in how VersionPress stores and parses internal data formats. VersionPress 3.0 covers everything that vanilla WordPress 4.5 does.




Other notable changes

  • Better update method that keeps the same INI files and VPIDs across VersionPress releases which makes inspecting history much easier.
  • vpconfig.neon (custom configuration format) was replaced by the standard wp-config.php constants.
  • NEON file format was replaced with a similar but more common YAML.
  • PHP 5.6+ is now required.
  • VersionPress underwent security and general code reviews


As much has changed in VersionPress 3.0, the platform cannot be upgraded from previous releases and a full re-activation is required. The recommended procedure is:

  • Put your website in maintenance mode
  • Deactivate VersionPress
  • Delete the contents of wp-content/plugins/versionpress and extract the latest version there.
  • Activate & initialize the plugin again.
  • Disable maintenance mode.

These improvements are surely to bring a better experience as VersionPress 3.0 provides more control and choices for users.


Find this post useful? Share ...Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInBuffer this pageShare on RedditDigg this