Introducing Revisionary for WordPress

Have you ever wanted to allow certain users to submit changes to published content, with an editor reviewing those changes before publication?

Doesn’t it seem like setting a published post/page to a future date should schedule your changes to be published on that date, instead of unpublishing it until that date?

The Revisionary plugin fills the missing quadrant in the WordPress content management matrix:


edit published posts

edit others’ posts


edit published posts

edit others’ posts


edit published posts

edit others’ posts


edit published posts

edit others’ posts

With Revisionary in place, the meaning of the “edit_others” capability shifts to grant revision submission rights if the owner lacks the corresponding “edit_published” / “edit_private” capability.

Here’s the feature overview:

  • Pending Revisions allow designated users to suggest changes to a currently published post/page
  • Scheduled Revisions allow you to specify future changes to published content
  • Enchanced Revision Management Form
  • Front-end preview display of Pending / Scheduled Revisions with “Publish Now” link
  • Email notification on revision submission, approval and publishing
  • Works with blog-wide WordPress Roles, or in conjunction with Role Scoper

Revisionary creates a new WordPress role defintion, “Revisor”.  It also enables Contributors to submit revisions to their own published content.  More documentation to follow, but the following screen captures illustrate the basic process:

Revisor submits changes to a published page

Pending Revision creation notice

Email notification to designated Editors / Administrators

Administrator / Editor view: Pending Revisions in Dashboard count

Administrator / Editor view: Pending Revisions in Edit Pages listing

Administrator / Editor view: Revision Manager

Administrator / Editor view: Revision Difference Display

Administrator / Editor view: Revision Preview

This plugin release is dedicated to Jesus Christ, the only hope for peace on earth and in my heart.

Download Revisionary (or WP 2.7-2.9 version here) and let me know what you think!


  1. Wakish

    Hello AgapeTry (I could not find your name anywhere on your blog, no about me?AgapeTry==Spiritual Love?) 🙂

    Anyway, I see an issue with your WP plugin ‘Revisionary’ and some suggestions as follows:

    1) ISSUE: When I edit a published post, it does not display the box for category and tags. So when I use a ‘role/capability management’ extensions, I cannot validate the post unless there’s a category and/or tag selected. You see what I mean?

    2) SUGGESTION: The box below entitled “Publishers to Notify of Your Revision” is IMHO unecessary! At least provide an option to disable it please?

    3) SUGGESTION: The comments box also is uncessary (same as 2) )

    Else, I sincerely think this plugin is GREAT for the ‘editing a published post and resubmit it for reconsideration’. That’s a great idea and it suits my needs. But I cannot use it till the issue mentioned above is solved.
    Please can you get back to me via my email or post here for a possible solution, I’m a coder too so maybe some hint?

    Thank you so much for this great plugin and for your precious time/support!

    – Wakish –

  2. Kevin


    Thanks for your feedback.

    My name is Kevin Behrens.

    (1) Revisionary currently does not support the modification of post category or tag when submitting a pending revision to a published post. Is that what you need to do? Or are is it just that the hiding of current categories / tags is causing you problems?

    (2) See Settings > Revisionary > Email Notification

    (3) You can always use Adminimize to hide the comments metabox for users of a certain WP role.

    I would be glad to hear more about how your Revisionary implementation progresses, and whether you have other ideas or contributions to improve it.

  3. Danny

    This looks like exactly what I was looking for. Unfortunately I’m having a bear of a time getting it to work, or maybe I’m misunderstanding how it’s supposed to work. I want to do exactly what you say at the top of the page, “Have you ever wanted to allow certain users to submit changes to published content, with an editor reviewing those changes before publication?”

    But when I install and activate this page I set the user to Revisor, and log in with their credentials. I cannot edit any pages in this mode. I seem to have narrowed it down to the fact that the admin created the pages and if I create a new page I am allow to submit it for review. So I tried changing the author of the pages to a non-admin (even a revisor), but I still cannot edit a page unless I’ve created it or it’s been created by another revisor.

    Am I doing something wrong or is this something funky with WordPress 2.9? I love the simplicity of this plugin, it sounds like it will do exactly what I was looking for. Role Scoper was just too much for what I wanted to do.

    Thanks for putting the time on this and providing free of charge.

    Jeremiah 9:24

  4. Kevin

    Danny, you may be using another plugin which imposes additional capability requirements for pages authored by admin. For example, the Exec-PHP plugin requires the exec_php capability in some wp-admin situations. Install the Capability Manager plugin and make sure your Revisor role has all the capabilities of Editor, except for the “published” capabilities.

    Exec-PHP did also show some conflict with Role Scoper that I was (I think) able to resolve. If you still have problems after confirming your role caps, I can look into it.

  5. Pingback: » Blog Archive » Introducing Revisionary for WordPress | Agapetry

  6. Kevin


    Good news is better late than never… Yes, you can enable Revisionary on a sitewide or per-blog basis. By default, it is enabled sitewide following activation. However, any Revisionary option (including Enable Pending Revisions) can be “re-scoped” for per-blog control.

    1. Go to Site Admin > Revisionary Options > Option Scope tab. Uncheck “sitewide control of Pending Revisions” and “sitewide control of Scheduled Revisions”.
    2. Go to Site Admin > Revisionary Defaults. If blogs should have Revisionary disabled by default, uncheck options here.
    3. In each blog backend, go to Settings > Revisionary and customize Revisionary options as desired
  7. Jenna

    Hi Kevin,

    Thanks for this plugin. I’m also using Role Scoper and liking both very much so far.

    When I’ve tested with a revision, it removed the post from the site until I then went back in at the admin level and approved the revisions.

    Is there any way to keep the post on the site in it’s original form, while awaiting the review of the revisions?


  8. Kevin


    The results you describe are not Revisionary’s normal behavior; it should work just as you suggest (keeping the original post readable while awaiting approval of a revision). Since I am not able to duplicate the problem in my own trial, can you let me know:

    * your WP version

    * is an RS role assignment required to read the post on the front end?

    * is the published post’s visibility set to public or private?

    * do you have Post or Category Restrictions set?

    * any Role Scoper or Revisionary options you modified from defaults?

    * does this still occur if you temporarily disable all other plugins?

    * if not, please try to determine the conflicting plugin or list all plugins

  9. JennaAvery

    Hi Kevin,

    Thanks for your prompt reply. I just tested again with another user and it worked properly (though it temporarily put the revision in a different category).

    Here are the answers just in case:
    1. WP 2.9.2
    2. Not sure — I will check this.
    3. public
    3. yes — category restrictions
    4. defaults
    5. will test

    Thank you!


  10. Matt Stone

    First of all, thanks for the great plugin. It’s well thought out and well written.

    I’m having an issue with TinyMCE Advanced and Revisionary. Both are at the latest version (1.0.7 & 3.2.7). My TinyMCE Advanced settings (custom buttons, autop, etc) are not being respected on the Revision Control page.

    I see this feature was introduced 1.0.1. Is there any reason it’s not working for me?


  11. Kevin


    I reviewed this on WP 2.9.2 and 3.0 and it’s the infamous “works for me.” Do you have any other clues for me to reproduce your configuration?

    By “not being respected,” do you mean they are hidden, don’t work, or just that something else on the Revision Control page disses them?

  12. Matt Stone

    Hi Kevin,

    Haha, I realised after posting my question that part was a bit vague.

    I’ve resolved this issue, it was actually limited to TinyMCE Advanced’s Fix Auto Paragraph functionality.

    The JS file that performs the fix wasn’t being included on the Revision page.

    The function in tinymce-advanced.php that includes this script determines if the editor is in the JS queue:

    (in_array( ‘editor’, $wp_scripts->queue, true)

    This is true for the main edit pages, but not the revisionary page. I didn’t attempt to determine why the editor is not in the queue at this point due to time constraints, but instead manually included the required script on the revision page.

    Thank you for your effort!

  13. Matt Stone

    Ok, next issue!

    In my template header (Thematic), I have code such as:

    if ( is_page_template() & !is_page_template(‘default’) ) {
    // add classes

    This adds a class with the template name to the body tag of my page.

    Because revisions don’t have templates, this code is never run. I can see that Revisionary gets around this issue via template_redirect to retrieve the parent template. Is there any easy way I can reuse your code to extend this to my header function?

    FYI: The template check code runs first during page execution.

    Matt Stone

  14. Fujilives

    I just wanted to say this plugin is amazing. This should absolutely be built into wordpress, as it adds functionality that is extremely easy to use, but extremely powerful in what it can provide.

    For me, I use it for monthly sale pages, I can design a sale page well in advance, and schedule it to auto-publish on the same page, without needing to direct users somewhere else. Having the old version still preserved inside the change history area, means I don’t need to have 20 pages for 20 sales, but instead just one page that I can revert to and from without problems.

    Amazing job!

  15. John

    I am looking for a second plugin that plays nicely with Revisionary. I work for a website which has a large number of users, some of which act as ‘team leaders’ while others are laypeople who we would like to be able to submit revisions. For this, Revisionary works great.

    However, I would now like to further constrain the abilities of users to specific pages – with Revisionary (as I understand it), if you’re able to submit revisions, you’re able to submit them for any page. I would like to set a group of users to, say, the About Us section of the website, such that the team leader may only edit pages in that section, and the laypeople can only submit revisions for that section. I would also like full administrators to be able to edit any page in any section.

    Do you know of any plugins which will work with Revisionary to narrow down which pages a user is able to edit/revise? Thanks for the great work on this plugin!

  16. Yassir


    First of all, awesome plugin! I’m trying to use it with my custom post type, but can’t seem to see the pending item from my admin.

    Is there any changes required in functions.php for the custom post type support?

  17. Mark Greninger

    Hi there,

    I am really looking forward to getting Revisionary working, it is exactly what I need! But I am getting an error message when I activate it and then try to get a listing of posts.

    Is Revisionary dependent upon having Role Scoper installed? I had a strange problem with Role Scoper – that when I tried to change categories on posts it would reset them to “Uncategorized”.

    I am using WordPress 3.0.1 and Role Manager – it is a bit simpler than Role Scoper.

    Anyway – here is the error message when I click on the “Posts” link:

    PHP Warning: Invalid argument supplied for foreach() in D:\Website\Internet\blogs\location_manager\wp-content\plugins\revisionary\admin\admin_rvy.php on line 337 PHP Stack trace: PHP 1. {main}() D:\Website\Internet\blogs\location_manager\wp-admin\edit.php:0 PHP 2. include() D:\Website\Internet\blogs\location_manager\wp-admin\edit.php:466 PHP 3. do_action($tag = ‘admin_footer-edit.php’, $arg = *uninitialized*) D:\Website\Internet\blogs\location_manager\wp-admin\admin-footer.php:31 PHP 4. call_user_func_array(array (0 => class RevisionaryAdmin { public $tinymce_readonly = NULL; public $revision_save_in_progress = NULL; public $impose_pending_rev = NULL }, 1 => ‘act_hide_quickedit_for_revisions’), array (0 => ”)) D:\Website\Internet\blogs\location_manager\wp-includes\plugin.php:395 PHP 5. RevisionaryAdmin->act_hide_quickedit_for_revisions(”) D:\Website\Internet\blogs\location_manager\wp-includes\plugin.php:0

    I hope you can help!

  18. Kevin


    You can correct that error by adding the following code to plugins/revisionary/admin_rvy.php, function act_hide_quickedit_for_revisions(), right after the global variable declaration:

    if ( empty( $rvy_any_listed_revisions ) )

    No, Revisionary does not require Role Scoper but can work in conjunction with it.

    By the way, Role Manager is indeed simpler than Role Scoper but they’re not functionally comparable. RM edits site-wide WordPress role definitions, while RS assigns or restricts roles on a content-specific basis (per-category, per-page, etc.) Of course, not every site needs that; often adjustment of the site-wide role capabilities is all you need. I’ll correspond with you about the RS category error by mail or in the support forum.

  19. JID

    Hi Kevin, Will Revisionary be fully working for WordPress 3.1? For now everything works perfectly, but when I click Tools -> Revisionary Options it gives a Page Not Found. Also, does the plugin makes any modification to the core of WP. Thank you and great work!

  20. Veronica

    I love revisionary but my users found a couple of things:

    1. Preview button doesn’t work. (Page not found error).
    2. The insert bar isn’t there.
    3. Is there anyway to make a note to administrator (about changes).
    4. The are you sure you want to leave page error seems to be supressed.

    Are there any fixes or way around these issues?

  21. Kevin

    1. Preview from the WP editor is not supported, button now hidden in just-released Revisionary 1.1.4

    2. To allow a Revisor to upload files, use a simple role editor such as Capability Manager to add the “upload files” capability to the Revisor role.

    3. Not currently, adding to feature wish list

    4. Adding to low-priority bug list

  22. Diego

    Hi kevin,
    let me add my compliment to the long list: great job!

    There’s just one issue, that was already taken up in the very fist comment on this post:

    When I edit a published post, it does not display the box for category and tags (or custom taxonomies in cpt).

    Are you planning to add this option or is just not on your roadmap?

  23. Diego

    Actually I’ve found a sort of workarund to category and tags editing.

    I’ve assigned to users I want to be able to edit revisions the capability to “edit_published_posts”.
    SO they are allowed by revisionary to Choose if save and publish OR save as pending revision (via a checkbox)

    so I added an action to redefine the publish area via jQuery:
    1) set checked the “send as revision” checkbox
    2) change the button text to “Save as revision”

    Then, in the revision management I’ve just added some CSS that hide the “publish Now” link

    it works quite well, it’s not ortodox, but it does what I need.
    I paste here my code, just to help if someone needs this stuff

    add_action(‘admin_menu’, ‘force_revision_check’);
    function force_revision_check()
    // works only if Revisionary is installed
    if ( defined( ‘RVY_VERSION’ ) )

    if (is_admin())
    global $current_user;
    if (!current_user_can(‘manage_options’)) //You can change the logic as you need
    global $pagenow;
    global $current_screen;
    if (‘post.php’ == $pagenow ) {
    // Load a small jquery script that changes “Publish” button into “Save as Revision”
    wp_enqueue_script(‘force_revision_check’, get_bloginfo(‘template_url’).’/js/force_revision_check.js’, array(‘jquery’));
    if (‘admin.php’ == $pagenow ) {
    // load some little css
    add_action( ‘admin_head’, ‘hide_pubblish_revision_link’ );

    // function that loads css
    function hide_pubblish_revision_link() {

    .rs-revision_top_action { display: none !important; }

    <?php }


    And this is the External Javascript I loaded before, just name it “force_revision_check.js”
    and store it into a folder called “js” into your template folder

    jQuery(‘#rvy_save_as_pending_rev’).hide( 0, function(){
    jQuery(‘#publish’).attr(‘value’,’Salva as Revision’);

    Obviously I’m opened to every critic and help 🙂

  24. Saturday

    Is there any update on revisionary supporting content input through custom fields? We have a site that needs this plug in but all content is managed through custom fields which do not seem to be recognized. I saw in a support forum that this is something you were considering for future releases. Do you have an ETD on when this might be available? We love the idea of this plug in but currently cannot use it!

  25. Anon

    Hello. I would like to second Andreas request of being able to change the publish date with a scheduled update. My desire is to on schedule move an old post to the top of the list (without sorting all posts by last modified).

  26. Kevin

    Terrick, to send notifications to all Editors only, add this the following to wp-config.php, before the “stop editing” line:

    define( 'SCOPER_MONITOR_ROLES', 'editor' );

    If you are also running Role Scoper but don’t want to use the customizable “Pending Revision Monitors” group, also add this:

    define( 'SCOPER_DEFAULT_MONITOR_GROUPS', true );
  27. Maaris

    Hello, a nice feature would be possibility so schedule future revision for wordpress scheduled, but no yet published posts.

    That is, when we are editing already published post, we may tick a box “save as pending revision”. However, when post is not published, but is already scheduled in WP for publication, this tick box is not available.

    This would be very useful if we want to publish a post, and add some extra more information on the next day. Like when holing a contest, running post series or making an announcements…

    Thank you if it’s possible to consider feature like this.

  28. Dan

    I have 1.1.9 of this plugin and the Revisor role cannot ‘Preview Changes’ before Submitting for review – which makes this plugin unusable, the Revisor needs to do this or how else can they see what their changes have done? I am missing something.


  29. Kees M

    Hi Kevin,

    As stated above, this should be default WP functionality – great work (anyone from Automattic listening?!) !
    In our group of enthousiast contributors, we have people reviewing text change suggestions. HOWEVER, these people cannot review the changes made by Revisors unless they are Revisors themselves (or Editors), but we want these people to view only.
    Something you have thought about (as in: any suggestions to work around this topic)?

    Thanks in advance, Kees.

  30. Kees M

    Hi Kevin,

    Again my humble question: is there a way to let (some kind of) users preview a revision, without these users being able to edit?

    I can’t find the solution – but that is probably my limited mind 🙁


  31. John

    Hi, It would be nice if emails could be sent when a revisor creates NEW content as well.
    (ie: new post, new page).
    Right now, it seems notifications are only sent when EXISTING content is modified by the revisor.

    Thanks for the great plugin !

  32. jamie

    THANK YOU SO MUCH FOR THIS. I spent countless hours trying to limit users to editing – NOT PUBLISHING – only their specific sections. In the end, coupled with Role Scoper, this plugin worked a charm. Thanks again.

Leave A Comment?

You must be logged in to post a comment.