WP Rollback Provides Basic Versioning for WordPress.org Plugins and Themes

The undo key from a computer keyboard
The undo key from a computer keyboard

Despite the recent proliferation of plugins that add git-based version control to WordPress, your average user does not require a full-blown version control system as part of regular site management. Developers can certainly benefit from tools like Revisr and Gitium for managing projects with Git, but the vast majority of WordPress users are more likely to benefit from a simple “undo” button for mistakes or bad updates.

WP Rollback is a new plugin that brings the concept of an “undo” button to updates for plugins and themes hosted on WordPress.org. It allows users to easily rollback to any previous (or newer) version without the hassle of manually downloading files.

wp-rollback

Clicking the Rollback link will take the user to a screen where he can select from a list of previous versions or update to newer ones.

wp-rollback-versions-screen

WP Rollback uses WordPress’ native plugin updater to revert to previous versions.

wp-rollback-update

While using older versions of themes/plugins is not generally encouraged, there are times when it’s unavoidable. For example, some plugin authors routinely push out buggy updates, seemingly without having run any tests on them, and then rely on their users to discover and report the problems. It can sometimes be 24 – 72 hours before the author has the chance to push out a fix to the buggy update. WP Rollback allows users to quickly revert to the previous working version of the plugin.

As themes hosted on WordPress.org do not yet have change logs, there may be times when a user updates to a new version of a theme where the author has made some major changes to the markup and/or styles. Without a changelog, the user has no idea what is included in the update or how it might impact a child theme or plugin’s output. WP Rollback gives you the ability to test a theme update and quickly rollback if necessary until you’ve had the chance to get your site ready.

Most WordPress users do not have a development environment in place for putting software updates to the test before rolling them out. They simply expect updates to work, but there will always be those rare instances of unforeseen conflicts and bugs. Having WP Rollback in place should help users to be less wary about taking updates, since they know they can easily rollback if something goes wrong.

WordImpress, the folks behind WP Rollback as well as the new Give plugin, encourages users to backup their sites before performing plugin/theme updates or reverts. Ideally, you would test any changes in a development environment first to ensure that everything works as planned. WP Rollback is available for free on WordPress.org and documentation can be found on GitHub.

Would you like to write for WP Tavern? We are always accepting guest posts from the community and are looking for new contributors. Get in touch with us and let's discuss your ideas.

24 Comments


  1. I don’t think I will use it, but thanks for sharing it. If any plugin update brings in bugs and the author does not bother to fix them quickly, then it’s time to stop using the plugin.

    Report


    1. Jeffrey, that could be true sometimes. Other times though, your site depends on the unique functionality that plugin brings and maybe it’s an incompatibility with your theme or another plugin. Plus, see my comment below for other use cases some have already found for it. You’d be surprised how simple and useful something like this can be.

      Report


  2. Thanks Sarah for the write-up! So far we’ve gotten really positive feedback. Developers understand that this doesn’t replace common sense or best practices with security and backups. We’ve also heard of some great use cases. It’s been recommended to the Siteground Support team to help with troubleshooting websites in staging. A friend of ours just used it to roll WooCommerce FORWARD from 1.6 to 2.3 incrementally. So there seems to be some great use cases in general.

    Also, we built it to be as intuitive to the WordPress experience as possible, no settings pages, just a button right where you’d expect it to be. We’re hoping it might attract the attention of the Core team.

    Thanks!

    Report


    1. The case of using the plugin to update WooCommerce from 1.6 to 2.3 sounds very interesting. Sometimes I have clients who uses very old version of my themes/plugins (no ones maintained websites for them), and when they get back to me to get updates, it would be a big problem if I just press update (with lots of changes).

      Report


  3. I’ve used old versions of plugins in the past to use features that were later removed so that they could add in a “pro add-on” not sure why this particular plugin author removed features instead of just adding them in the pro pack but fortunately I only had to use the plugin once and then delete it.

    Another use case for an old version.

    Report


  4. Excellent! I’ve been looking for this functionality for a long time. This will make it easy to see if a bug you think was introduced by a new version really was not in the prior version (particularly when several versions are released in quick succession). And, of course, covers those “uh-oh” moments when you missed as issue during staging and found the issue on the live site.

    A big Thank You to the developers!

    Report


  5. This plugin looks great.

    Themes do have changelogs, they are just not parsed by WordPress.org and WordPress core.

    Report


  6. It’s not free (and I’m the lead developer), but another solution is automatic pre-update backups – https://updraftplus.com/shop/autobackup/ – which have the plus of also retaining any customisations to the plugin (which of course you shouldn’t do…) and the state of the WordPress database (because a new plugin version may have changed its data structures, so a simple rollback in that case won’t help), and running before WordPress background updates.

    Report


    1. Hi David! Ya, this is definitely not a substitute for robust solutions like UpDraftPlus or VersionPress. This is simple, roll back, roll forward, be safe!

      Report


  7. This is a great idea. For people who are traumatized by breaking WooCommerce updates, “Oh, you should have backed up first” is not really good enough. Thank you for developing it!

    Report


    1. Well, even with this, you really should backup before rolling back. There’s no guarantee that if you roll back that all things will still be the same.

      Report


      1. Matt, in view of this, would you consider allowing a plug-in to disable rollbacks (perhaps even with an appropriate message), so that if a plug-in’s update should not be rolled back (e.g. owing to internal data structure changes and so forth), a user would not be allowed to. (Or at least given an appropriate health warning).

        A neat solution nevertheless for users who update ‘live’ and find themselves with a broken site.

        Report


      2. Hi Stephen, yes, the team purposely included lots of actions and filters for other developers to be able to hook their own functions into. You could add a unique warning or message to a specific version number. If you do that with a plugin, give us a heads up, we’d love to showcase it.

        Report


      3. Hey Matt,

        I’d consider myself a beginner in the plugin development world. Being a beginner, I made the mistake of renaming a widget class because I didn’t like the original name I chose. The difference between those versions caused my users to lose their widget. I can see a valid case here for hooking into WP Rollback and giving the user a notice that they will lose their widget when rolling back or upgrading past this version. I’d love to play with WP Rollback this weekend and see if I can make that happen. :)

        Report


    2. It might give you a false sense of security. For example, in major updates of WooCommerce, internal data structures change in the database. Rolling back the plugin files won’t roll back the database status. Only a proper backup will do that.

      So, it’s a tool that like all tools can be useful – if used with proper awareness of what situations it’s suited or not suited to to.

      Report


      1. Maybe this plugin will give plugin developers a healthy sense of insecurity about the edge cases where someone has the 1.0 file manifest and the 2.0 database structure. Although I’m not sure in what cases that would be a huge disaster and in any way the developer’s fault.

        Using a browser gives people a false sense of security. :-!

        Report


  8. Another brilliant little plugin to add to the standard list.

    Matt, if you can make it replace the WSOD with an “undo” and “blame” mechanism it’s on the fast track to the top ten plugins of all time. :-D

    Report


    1. Sheesh! If only that was possible! We seriously discussed it, I mean, is it possible to wrap your entire install so that if something REALLY fatal happens you could just a notification, with a link to a secret url with a nonce and visit that and BAM: Undo done. You’re right, that’d be money.

      Report


  9. Hi Dylan, the comment system here wouldn’t let me reply to your comment (probably threaded too deep), so I hope you see this. (https://wptavern.com/wp-rollback-provides-basic-versioning-for-wordpress-org-plugins-and-themes#comment-68226)

    I think even better than a notification would be if you had an upgrade/downgrade script in your plugin and you could hook that into the WP Rollback actions so that the rollback went seamlessly. As I mentioned in a few places, we put lots of hooks in there to allow for that. I’d love to see plugin authors adopting that. Plus, it goes together with the whole concept of backwards compatibility to watch for that kind of thing.

    Report


    1. Thanks for taking the time to reply – I’ll definitely give that a shot.

      Thanks again for providing this awesome tool for the community. :)

      Report


  10. You could also use WP CLI for this. The wp plugin update command allows to specify a –version. In either case I doubt the rolling back will account for plugin-related database changes…

    Report


  11. This is a great plugin which will solve some trouble especially for the minor updates. Backups will remain as the ultimate fail-safe as they should be, but restoring a full backup is never fun.

    Report


  12. That plugin sounds very useful!

    Being able to “roll forward” is very clever, and could be super helpful. Let’s say you end up working on a site with WP 3.1 or something. A plugin is now 10 versions behind, but its Magical Database Overhaul occurred 5 versions ago. You update, and it’s just trashed – the Magic Overhaul had the Magic Conversion! But if you had this “roll forward”, potentially you could gradually update, testing each step, and coming out clean!

    Another minor issue this could solve is when you update a plugin but find that the new version only runs on PHP “7.whatever”, which is not on your host yet.

    Nice job!!!!
    Dave

    Report

Comments are closed.