Is there any way to draft a revision of a published page or post? What workarounds have you used?

Say I’ve already published a page or post. I now want to make changes, but I want a colleague to check them over before they go live. Is there any way of doing this?

Edit: I do realise this isn’t currently possible as such and it’s creative workarounds I’m interested in.

On the site I’m currently working on, I also have a separate password protected ‘staging’ site for drafting major content changes/additions, and once approved I copy and paste to the live site. I’m wondering if anyone’s used a similar method, but perhaps automated the ‘push’ to the live site?

I’m aware of this question: Database synchronization between dev/staging and production, but that’s more about wholesale synchonization of entire databases rather than individual pages or posts.

Now offering a bounty in order to try and drive out some additional ideas for workarounds.

Solutions Collecting From Web of "Is there any way to draft a revision of a published page or post? What workarounds have you used?"

It should be possible to add a button to the Publish box Save as changed copy. You have to hook into content_save_pre then and copy the content and all meta data into a new post with a draft status. After the review the posts have to be merged back.

I haven’t done this yet, but it is really needed.

http://wordpress.org/extend/plugins/revisionary/

This plugin will do what you want. It creates a role Revisor that is kind of in between Contributor and Editor. The UI could be improved and the internal code had to work around a lot of WordPress’ missing features, but yeah, this solves your problem: It will allow you to save a draft (actually a ‘pending’ ‘revision’).

Hi @e100;

If you were interested in a custom plugin solution I can envision several approaches.

  1. A process similar to what @toscho described as “Save as Changed Copy” but with some subtle differences. The plugin could lock editing of published posts but allow you to create derived posts with a new status like “Updated Draft” which could be tied back to the original post via a custom field. These derived posts could then be edited, reviewed, etc. but instead of having the option to publish you would have the option to replace the original post with your update.

  2. Another process could use the built-in revision system although I’d have to do some research to figure out how to serve to the browser a version that is not the most recent; maybe save the content off as a custom field and allow you to continue to work on it.

  3. A third process might be to set up a second WordPress site as an editing sandbox, use web services to retrieve the posts, allow you to edit them remotely, and then when you are ready to publish them you could push back to the main site.

  4. Similar to #3 you could set up an editing sandbox using a WordPress Multisite install and create non-public blogs for each author to have as their own editing sandbox.

Again, all those options would require custom plugin development.

If you are looking for existing plugins you want to take a look at these albeit I don’t yet has specific experience with them so I don’t know if any of these will do exactly what need:

  • Assignment Desk is an editorial tool for news organizations using WordPress as their content management system. The goal of the plug-in is to make community engagement with the news production process easier and more efficient.

  • Edit Flow offers a suite of functionality to redefine your editorial workflow within WordPress.

  • Peter’s Post Notes – Add notes on the “edit post” and “edit page” screens’ sidebars in WordPress 2.8 and up. When used with Peter’s Collaboration E-mails 1.2 and up, the notes are sent along with the e-mails in the collaboration workflow. There is also a general and private notes system on the dashboard.

Not at this time, unfortunately. If the page/post is already published, your only recourse would be to create a new page/post to hold your edits and privately publish it so your colleague can check your changes. Then replace the content on your live page/post with the revised version.

Just FYI: Making draft-status changes to already published content is a workflow not employed by many WordPress users. I’ve heard of at least 3 different ways people want it to be done in the past month, too … so without a standard here-is-how-you-submit-revisions-to-already-published-content workflow, chances of this ever being a feature of WordPress are slim.

maybe an easy solution: the plugin http://wordpress.org/extend/plugins/duplicate-post/ for copy a post

There’s a plugin called Live drafts that seems to work quite well?

http://wordpress.org/extend/plugins/live-drafts/

While this probably won’t solve your specific problem I suggest you look at the “Edit Flow” plugin on wordpress.org. It’s a very slick plugin which may very well be of use to you.

There is now a very neat solution to this with a plugin Drafts of Post Revisions.

Users can be permitted to create a draft revision of a published post (or custom post type) which is created as a child copy of the post.

Drafts can be compared to its published parent via the compare revisions feature.

On publishing a draft revision, any changes are integrated back to the parent as the draft is disposed. Multiple drafts can also be maintained.

Would recommend this one to anyone – it’s becoming a standard plugin for WordPress sites. However, I suspect we may see this kind of feature being developed in the WordPress core in near future..

This is a really old question, and while looking at some of the plugins mentioned here, I noticed that many aren’t maintained or not quite what I was looking for.

In the end, I found one I liked called Revisionize. While it’s reputation and usage isn’t up yet since it’s rather new, I like it.

Pros:

  1. Nice UI within WordPress, buttons are easy to find and there are warnings and notes when you’re using the plugin what pressing buttons will do.
  2. Has a 5 star rating
  3. Last update was 3 months ago, and it’s marked as compatible with the latest version of WordPress
  4. Compatible with Advanced Custom Fields plugin

Cons:

  1. Only 300+ active installs
  2. Only 4 reviews

I’ll probably end up using one of the plugins mentioned in other answers, but when I needed this functionality, and didn’t have time to go looking for plugins, was to ensure revisions were working, save the changes and immediately revert them.

Now my “draft” is in my revision system.

Not great on a production system, but good enough on a dev system, until you decide on a plugin to use.

Found this answer here which worked for me. I modified it slightly as I am using custom user roles.

function published_to_pending( $post_id ) {
    global $post;
    if ( ! is_object( $post ) ) {
        return;
    }

    if ( ! current_user_can( 'publish_posts' ) && $post->post_status == 'publish' ) {
        // stop recursion call
        remove_action( 'save_post', 'published_to_pending' );

        // update the post, which calls save_post again
        wp_update_post( array( 'ID' => $post_id, 'post_status' => 'pending' ) );

        // re-hook this function back
        add_action( 'save_post', 'published_to_pending' );
    }
} 

add_action( 'save_post', 'published_to_pending' );