42

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.

4

13 Answers 13

20
+50

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.

2
  • 2
    I like this simple idea. The API only needs a Copy Post Revision function that is able to copy a full revision incl. the metadata to a new (yet not created) or to an existing post. That done, the draft post copy can be copied over to the original post later then.
    – hakre
    Commented Nov 12, 2010 at 22:56
  • @toscho I was just wondering if it's still the best way to go about the problem? Maybe someone has got an example code or something a bit more concrete? Thanks
    – dashaluna
    Commented Nov 22, 2011 at 13:38
9

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').

2018 Update: Revisionary seems to have stopped development about 3 years ago. However, see Tessa's answer about Revisionize (https://wordpress.org/plugins/revisionize). Revisionize looks like the best solution.

2019 Update: Revisionary is now owned and being actively developed by PublishPress. The original author is also working with them to support it.

5
  • I just tested this plugin on a newly upgraded 3.1.2 install. The process of actually applying the pending revision seems broken. Given the sparsity of the documentation, it's not clear if it's broken in 3.1.2, or if the intended UX is that the approving party must copy-paste the revision into the published post manually. In any case, I'm not pushing this out to my users.
    – marfarma
    Commented Jun 3, 2011 at 23:37
  • The UI is pretty wacky, but that's because there's no real way to integrate it into WP properly as far as I can tell. WP just lacks the hooks for it. When I tested it, it did work however... there's a button or link somewhere that 'restores' the revision. You shouldn't have to copy-paste anything. I've since switched to having the user just email the editor with revision request specifically because I don't like the UI. Commented Jun 15, 2011 at 22:24
  • Agree, this plugin if often broken for me, and incredibly awful to use.
    – James
    Commented Feb 11, 2015 at 23:46
  • I haven't used it in 3 1/2 years; I wouldn't assume it'd still work. There must be a new/better way of doing this, since things in WP core have improved greatly since this post. Commented Feb 17, 2015 at 16:37
  • 1
    Seems to be working as of today
    – John
    Commented Oct 16, 2015 at 16:28
6

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.

2
  • your 1st suggestion sounds like a very cool solution! Oh and Happy Thanksgiving Mike, seeing that your ALWAYS the one giving excellent advice/solutions to all of us! Commented Nov 29, 2010 at 18:02
  • 1
    All of those suggestions are for plugins that handled UNpublished posts. What WordPress doesn't have (that all other CMSes do) is a way to save drafts-in-progress of revisions to already published posts.
    – James
    Commented Feb 11, 2015 at 23:48
4

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 4.9 star rating
  3. Still maintained by its developer
  4. Compatible with Advanced Custom Fields plugin
  5. Compatible with Public Post Preview plugin

Cons:

  1. Only 300+ 4,000+ active installs
  2. Only 4 reviews 21 reviews
  3. No Gutenberg support

Updated lists on August 15, 2019. While it's still a great plugin, if you're using the Gutenberg blocks editor, it might not be for you.

3
  • 1
    Hey I'm the plugin author of Revisionize. It's come a long way - about to launch version 2.1 which adds improved multisite/network compatibility. The latest version has a basic settings panel and there are now a few paid addons available form revisionize.pro that adds support for contributors to revisionize existing content and submit changes for review. There are now 1000+ active installs and 11 5-star reviews. Commented Mar 7, 2018 at 6:43
  • Yeah, you are up to 18 5-star reviews! I really believe this (and Revisionize) should be the accepted answer now-a-days. Commented Oct 4, 2018 at 16:23
  • There's been a solid improvement with Revisionize. Thank you @JamieChong Commented Sep 4, 2019 at 18:54
3

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.

4
  • 2
    Hmmm, it does seem odd to me that this kind of workflow isn't in greater demand, especially as WP is increasingly pushed as a full-featured CMS with custom content types, etc.
    – e100
    Commented Nov 13, 2010 at 13:14
  • 1
    The problem is that "this kind of workflow" is defined differently by so many different people. If there were a standard, it would be easy to include. Without a standard, customizing WP for one workflow alienates the others. As it stands, it's easier to let developers build custom solutions for specific situations.
    – EAMann
    Commented Nov 14, 2010 at 0:31
  • I'd be really interested in hearing those three different ways people want to manage workflow. Commented Nov 22, 2010 at 10:52
  • The two I can remember specifically: 1) Role-based: Contributers can edit the content of a post and click "submit revision" which must be reviewed before the changes go live. 2) Split Revisions: Users can select a review of any post and automatically copy the revision into a new post without rolling the existing post back.
    – EAMann
    Commented Nov 22, 2010 at 16:00
3

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

2

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

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

2
1

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.

1
  • Nope. Editflow only allows setting up multiple statuses of UNpublished posts. What's needed is a way to save drafts of updates-in-progress to already published posts. it's one of the most stunning ommissions in WordPress.
    – James
    Commented Feb 11, 2015 at 23:45
1

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..

1
  • 5 years since update
    – user68816
    Commented Jun 12, 2019 at 23:14
1

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' );
1

Hi @e100 :)

I think smart solution would be for you to use an existing free plugin. It does all the things you wrote about. Just download it from WordPress.org: https://wordpress.org/plugins/revision-manager-tmc/
This plugin is very often and regularly updated

Revision Manager TMC works great with the second free plugin to edit the user role capabilities - User Role Editor https://wordpress.org/plugins/user-role-editor/

2
  • 1
    As of 2019 this is the most complete solution. It's similar to Revisionize, but more intuitive and more complete. 1) Revisions are linked to the original posts; 2) Allows you to assign editors a "Contributed Role", while restricting them from the original post; 3) It makes the revisions feel like revisions, i.e. hides the publishing options, etc.. Commented Apr 1, 2019 at 23:52
  • And ACF support.
    – user68816
    Commented Jun 12, 2019 at 23:10
1

There's now a new feature in the (now Yoast) Duplicate Post plugin that lets you "Rewrite & Republish" a post. This allows you to save your edits as a draft and schedule re-publishing merging the revisions with the original.

You can find more details here: https://yoast.com/help/how-to-use-the-rewrite-republish-feature-in-yoast-duplicate-post/

0

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.