[wp-testers] Post Revisions

Michael D Adams mikea at turbonet.com
Fri May 23 19:33:04 GMT 2008


A Long email to clarify some confusion.  Sorry for the lack of  
individual replies/snips :(


Autosaves:

There is only ever a maximum of one autosave for any given post.  New  
autosaves overwrite old autosaves.  This means that no, your tables  
do not grow by one row every 60 seconds.

Autosaves are enabled for all posts and pages but do not overwrite  
published content.  Autosaves are stored as a special type of  
revision; they do not overwrite the actual post.  In fact, if your  
browser does crash, when you go to edit that post, WP will toss up a  
warning that says something like "This post has an autosave which is  
more recent that the post itself.  Would you like to see it?"  With a  
link to the revision page from where it can be restored/ignored.


Revision Options:

There are options, but they are hidden well :)  There is a constant  
(not even filterable) that can be set by a plugin or in your wp- 
config.php file:

WP_POST_REVISIONS:
	true (default), -1:  store every revision
	false, 0: do not store any revisions (except the one autosave per post)
	(int) > 0: store that many revisions (+1 autosave) per post.  Old  
revisions are automatically deleted.


Revision Storage Method:

Revisions are stored in the posts table.  I don't yet know what kind  
of impact that will have on post queries.  We're going to turn the  
switch to "on" on WordPress.com sometime soonish and we'll have a  
better idea about what kind of damage, if any, it does.

Revisions are stored as children of their associated post (the same  
thing we do for attachments).  They are given a post_status of  
'inherit', a post_type of 'revision', and a post_name of {parent ID}- 
revision(-#) for regular revisions and {parent ID}-autosave for  
autosaves.

Plugins can customize what fields (within limits) are versioned.  By  
default, WP keeps track of the changes to title, author, content,  
excerpt.


Revision Management:

Deleting:
There is an API function to delete revisions, but there is no UI.   
That can certainly change.

Andrew proposed a delete button in the actions column.  A column of  
checkboxes and some action buttons at the top would be more in  
keeping with the current WP UI (like the Manage -> Posts page), but  
that would be totally confusing with the column of radio buttons and  
the "Compare" button we currently have.  Andrew's suggestion is clean  
and simple.  If any one wants to rethink that whole UI, please go  
ahead.  Send some mockups to the list.

Re-editing by Contributer:
I have no idea what happens in WP 2.5 when a Contributor edits an  
already published post (by that user or by another) :)

I can say, though, that nothing fancy happens with revisions in that  
scenario (unless the good will of some unforeseen bug rears its  
serendipitous head).

Creating new not-yet-to-be-published revisions for a currently  
published post / pinning an old revision:
No.  I honestly haven't a clue how many users would use this  
feature.  Maybe everybody, maybe nobody.  I don't think the code  
would be too hard to implement as a plugin given the new revisions  
API functions.  The UI sounds difficult to me to get right.

If it is truly useful to our user base, we can certainly make it  
happen for core.  I'm sure we'll get feedback from "real users" at  
WordPress.com when it gets turned on.


Displaying Rendered Revisions:

Andrew mentioned the possibility of showing revisions in "raw" or  
"rendered" form.  That seems like a good idea to me.

We had also discussed the possibility of showing old revisions and  
diffs on the blog itself.  That certainly wouldn't appeal to  
everyone.  I think that can be left to themers/plugin writers.  All  
the pieces for it are already in core.


If anyone disagrees, has new (or old :) ) thoughts, ideas, or what  
have you, please voice them.

Mike


More information about the wp-testers mailing list