Title: WordPress 3.6: Autosave and Post Locking
Author: Mark Jaquith
Published: January 7, 2013
Last modified: February 7, 2013

---

 [  ](https://profiles.wordpress.org/markjaquith/) [Mark Jaquith](https://profiles.wordpress.org/markjaquith/)
7:42 pm _on_ January 7, 2013     
Tags: [3.6 ( 65 )](https://make.wordpress.org/core/tag/3-6/),
[autosave and post locking ( 8 )](https://make.wordpress.org/core/tag/autosave-and-post-locking/)

# WordPress 3.6: Autosave and Post Locking

I want, as a major 3.6 bullet point, that we should never lose posts due to expired
cookies, loss of connection, inadvertent navigation (even if AYS’d), pluginPlugin
A plugin is a piece of software containing a group of functions that can be added
to a WordPress website. They can extend functionality or add new features to your
WordPress websites. WordPress plugins are written in the PHP programming language
and integrate seamlessly with WordPress. These can be free in the WordPress.org 
Plugin Directory [https://wordpress.org/plugins/](https://wordpress.org/plugins/)
or can be cost-based plugin from a third-party. or coreCore Core is the set of software
required to run WordPress. The Core Development Team builds WordPress. errors on
save, browser crashes, OS crashes, cats walking on keyboards, children drooling 
in keyboards, etc. I want people to trust WordPress with their posts. They should
never fear that something they’ve spent time creating or editing should go away 
due to their mistake or ours or that of a third party. Mistakes and errors should
be recoverable. I can’t stress enough how important it is that people believe this
and have good reason to believe it. If a post gets lost, there is a catastrophic
loss of trust, that could take years to be regained (if indeed it ever is). This
is people’s time and their creative output we’re talking about. If we’re not valuing
those things above all else, then our priorities are seriously out of order. This
is an all-hands-on-deck item for 3.6. Even if you’re not actively working on the
code or the copy or the UIUI User interface or the UXUX User experience I want you
to be thinking about ways in which WordPress could better treat your creative output
as the valuable artifact it is.

Things this will likely involve:

 * Local storage of post data while editing, in-between autosaves and manual saves.
 * More frequent “heartbeat” pings to the server (allowing data to hitch a ride 
   at certain intervals, and also allowing us to quickly deliver messages back from
   the server about events).
 * Real and more granular post locking. Right now we just have a wimpy notice that
   isn’t a good deterrent against people simultaneously editing a post and overwriting
   each other’s changes.
 * Probably some interaction with the team working on improving Post RevisionsRevisions
   The WordPress revisions system stores a record of each saved draft or published
   update. The revision system allows you to see what changes were made in each 
   revision by dragging a slider (or using the Next/Previous buttons). The display
   indicates what has changed in each revision..
 * UX work for making recovery from failure scenarios smooth, clear, and worry-free.

[@aaroncampbell](https://profiles.wordpress.org/aaroncampbell/) and I have chosen
[@azaozz](https://profiles.wordpress.org/azaozz/) to lead this, as it will probably
be very JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming
language commonly used to create interactive effects within web browsers. WordPress
makes extensive use of JS for a better user experience. While PHP is executed on
the server, JS executes within a user’s browser. [https://www.javascript.com](https://www.javascript.com/)-
heavy. There are a lot of moving parts here, so please leave a comment if you’re
interested in this important, heroic, virtuous endeavor. 🙂

[#3-6](https://make.wordpress.org/core/tag/3-6/), [#autosave-and-post-locking](https://make.wordpress.org/core/tag/autosave-and-post-locking/)

### Share this:

 * [  Threads ](https://make.wordpress.org/core/2013/01/07/wordpress-3-6-autosave-and-post-locking/?share=threads)
 * [  Mastodon ](https://make.wordpress.org/core/2013/01/07/wordpress-3-6-autosave-and-post-locking/?share=mastodon)
 * [  Bluesky ](https://make.wordpress.org/core/2013/01/07/wordpress-3-6-autosave-and-post-locking/?share=bluesky)
 * [  X ](https://make.wordpress.org/core/2013/01/07/wordpress-3-6-autosave-and-post-locking/?share=x)
 * [  Facebook ](https://make.wordpress.org/core/2013/01/07/wordpress-3-6-autosave-and-post-locking/?share=facebook)
 * [  LinkedIn ](https://make.wordpress.org/core/2013/01/07/wordpress-3-6-autosave-and-post-locking/?share=linkedin)

 1.  ![](https://secure.gravatar.com/avatar/19064ed4f839086c8fd557e5d00c62cdb52cdba868e6bf100a64d8a4f0974aed?
     s=32&d=mm&r=g)
 2.   [Mike Schinkel](https://profiles.wordpress.org/mikeschinkel/)  7:43 pm _on_ January
     7, 2013
 3.  +1!
 4.  ![](https://secure.gravatar.com/avatar/6845456dbc9056f20a4cd50a6b95db78f2ae31df5c0601c613ee5b8939c41a82?
     s=32&d=mm&r=g)
 5.   [Jon Brown](https://profiles.wordpress.org/jb510/)  7:46 pm _on_ January 7, 2013
 6.  +1 – May I suggest that versioning and autosaving of metadata be included in this
     push. I’ve seen several people become reliant on the revisionsRevisions The WordPress
     revisions system stores a record of each saved draft or published update. The 
     revision system allows you to see what changes were made in each revision by dragging
     a slider (or using the Next/Previous buttons). The display indicates what has 
     changed in each revision. and auto-save of the content (yay, they trust it!) and
     then be disappointed to discover their excerptExcerpt An excerpt is the description
     of the blog post or page that will by default show on the blog archive page, in
     search results (SERPs), and on social media. With an SEO plugin, the excerpt may
     also be in that plugin’s metabox. or content in a metaboxMetabox A post metabox
     is a draggable box shown on the post editing screen. Its purpose is to allow the
     user to select or enter information in addition to the main post content. This
     information should be related to the post in some way. isn’t given the same treatment.
 7.   * ![](https://secure.gravatar.com/avatar/46a732350f63125abb1db7d2500ebd3110318fb48e518a2e0aa3524c8d5b9c0e?
        s=32&d=mm&r=g)
      *  [Mark Jaquith](https://profiles.wordpress.org/markjaquith/)  7:55 pm _on_ 
        January 7, 2013
      * There’s at least one ticketticket Created for both bug reports and feature 
        development on the bug tracker. that touches on that [https://core.trac.wordpress.org/ticket/20299](https://core.trac.wordpress.org/ticket/20299)
      * But yeah, we need to start thinking about the fact that as more people use 
        WP as a CMS, a lot of their important data resides outside of post_content.
         - ![](https://secure.gravatar.com/avatar/1104845f09121c5846b245562e551c0f729d973d344d82c4324bfc224b76c867?
           s=32&d=mm&r=g)
         -  [Travis Northcutt](https://profiles.wordpress.org/travisnorthcutt/)  8:
           01 pm _on_ January 7, 2013
         - Absolutely this. We make heavy use of post metaMeta Meta is a term that 
           refers to the inside workings of a group. For us, this is the team that 
           works on internal WordPress sites like WordCamp Central and Make WordPress.
           in sites we build for people, and storing revisionsRevisions The WordPress
           revisions system stores a record of each saved draft or published update.
           The revision system allows you to see what changes were made in each revision
           by dragging a slider (or using the Next/Previous buttons). The display indicates
           what has changed in each revision. would be a huge plus. Does anyone know
           of additional tickets that address this? (The one Mark linked to is specifically
           focused on the fact that previewing changes to a post updates meta (silently),
           which isn’t expected behavior).
            * ![](https://secure.gravatar.com/avatar/e05110ddfc422ecfc3c68f61f2b08a404343ef8514fed12b460fc9c9aaa47d27?
              s=32&d=mm&r=g)
            *  [Helen Hou-Sandi](https://profiles.wordpress.org/helen/)  8:04 pm _on_
              January 7, 2013
            * [#20564](https://core.trac.wordpress.org/ticket/20564)
               - ![](https://secure.gravatar.com/avatar/1104845f09121c5846b245562e551c0f729d973d344d82c4324bfc224b76c867?
                 s=32&d=mm&r=g)
               -  [Travis Northcutt](https://profiles.wordpress.org/travisnorthcutt/)
                 11:20 pm _on_ January 7, 2013
               - Thanks Helen. Might I suggest that it would be natural for [#18179](https://core.trac.wordpress.org/ticket/18179)
                 to include an argument such that when a metaboxMetabox A post metabox
                 is a draggable box shown on the post editing screen. Its purpose is
                 to allow the user to select or enter information in addition to the
                 main post content. This information should be related to the post 
                 in some way. is registered, the keys in that box are then registered
                 to have revisionsRevisions The WordPress revisions system stores a
                 record of each saved draft or published update. The revision system
                 allows you to see what changes were made in each revision by dragging
                 a slider (or using the Next/Previous buttons). The display indicates
                 what has changed in each revision. tracked.
 8.  ![](https://secure.gravatar.com/avatar/c64b8f97639b146b3a504e7d2cb44a6d7296f3a607e767abe41fa2cbc50cadbc?
     s=32&d=mm&r=g)
 9.   [Pippin (mordauk)](https://profiles.wordpress.org/mordauk/)  7:55 pm _on_ January
     7, 2013
 10. Huge +1.
 11. ![](https://secure.gravatar.com/avatar/c42f12d9d5d3ae4995b27cca8e85fc8942a88fb5ed5b436a460a0ec289468d86?
     s=32&d=mm&r=g)
 12.  [goldenapples](https://profiles.wordpress.org/goldenapples/)  7:58 pm _on_ January
     7, 2013
 13. +1, I’m very interested in helping work on these features. I’ve worked with the
     authors on the site I manage to find workarounds for a number of related problems
     and have several ideas I’d like to test out:
 14.  * visualizing revision history as a tree rather than just a list (I look at vim’s:
        Gundo pluginPlugin A plugin is a piece of software containing a group of functions
        that can be added to a WordPress website. They can extend functionality or 
        add new features to your WordPress websites. WordPress plugins are written 
        in the PHP programming language and integrate seamlessly with WordPress. These
        can be free in the WordPress.org Plugin Directory [https://wordpress.org/plugins/](https://wordpress.org/plugins/)
        or can be cost-based plugin from a third-party. as a rough UIUI User interface
        example)
      * post metaMeta Meta is a term that refers to the inside workings of a group.
        For us, this is the team that works on internal WordPress sites like WordCamp
        Central and Make WordPress. as mentioned above, although that needs a LOT of
        thought (lots of postmeta is never shown in a meta box, or is not meant to 
        be edited by authors…)
      * doing more to enable inter-user messaging along with the “heartbeat” autosave
        calls. Its possible to do something with websockets for the maybe 2% of sites
        that have that enabled, but for most people, the regular adminadmin (and super
        admin)-ajax calls could be used to pass messages back and forth about what 
        other users are viewing, if one user requests a release of the lock, etc.
 15. Pingback: [willnorris.com](https://willnorris.com/2013/01/995)
 16. ![](https://secure.gravatar.com/avatar/82e095c8bc229017b128e53940ea534aa31f6624431bedee24c7e8756e42dd1c?
     s=32&d=mm&r=g)
 17.  [adamsilverstein](https://profiles.wordpress.org/adamsilverstein/)  9:07 pm _on_
     January 7, 2013
 18. i’m interested in helping if i can
 19. ![](https://secure.gravatar.com/avatar/9705fb03830117c6ae4c86df7bf2a7d1894c07363674b7053745b7399b42113e?
     s=32&d=mm&r=g)
 20.  Anonymous User  9:19 pm _on_ January 7, 2013
 21. omg. yes.
 22. ![](https://secure.gravatar.com/avatar/024316af8fa284f9ca54dbb695a52e27ebf9f848a5bbf8b590446c642641b258?
     s=32&d=mm&r=g)
 23.  [Arnan de Gans](https://profiles.wordpress.org/adegans/)  9:22 pm _on_ January
     7, 2013
 24. And on top of that… While you guys are at it, make the dashboard, the whole of
     it, faster. Better loading, faster rendering (?) Whatever. Often on sites that
     have a bunch of plugins active it get’s really sluggish.
 25.  * ![](https://secure.gravatar.com/avatar/87f8c2bbfabbae3462bbab2c83ce82763c7ff91bc632b64f3af7e24d929633f6?
        s=32&d=mm&r=g)
      *  [Aaron D. Campbell](https://profiles.wordpress.org/aaroncampbell/)  10:13 
        pm _on_ January 7, 2013
      * This is largely dependent on what they plugins you’re talking about do on the
        dashboard. Sounds like they’re likely doing something wrong if they’re slowing
        down the dashboard that much.
      * ![](https://secure.gravatar.com/avatar/eb35704499c3f93dcf67a9c54f5cc3d3998218b0d277746e09de0fb7956ce9f9?
        s=32&d=mm&r=g)
      *  [Aaron Brazell](https://profiles.wordpress.org/technosailor/)  12:04 am _on_
        January 9, 2013
      * Or nuke it altogether. I don’t have numbers but I’m guessing the majority of
        people spend 1% of their time in the Dashboard. I find it altogether useless,
        although I’m sure some would disagree with me.
      * When I login to WP to produce content, the first thing I do is click on Add
        New in the posts menu. That’s a hover and a click more than I need to get into
        content production.
 26. ![](https://secure.gravatar.com/avatar/68de815838f9c51a040dfd2dbf068aaa70a97fab05b0e11f7247f37df27da034?
     s=32&d=mm&r=g)
 27.  [John Kleinschmidt](https://profiles.wordpress.org/johnkleinschmidt/)  9:46 pm
     _on_ January 7, 2013
 28. I have been doing a decent amount of work around offline storage recently and 
     would love to help contribute on the JSJS JavaScript, a web scripting language
     typically executed in the browser. Often used for advanced user interfaces and
     behaviors. side of things.
 29. ![](https://secure.gravatar.com/avatar/3a805ac4ee9fc80439dbb39a9b1939c43ad6b69f93ca101634993906442a7fce?
     s=32&d=mm&r=g)
 30.  [Md Mahmudur Rahman](https://profiles.wordpress.org/mamun155/)  10:10 pm _on_
     January 7, 2013
 31. Excellent.
 32. ![](https://secure.gravatar.com/avatar/802e2273c81b14044e794fe5dd33a41c8cd27c22d4a64b0f1bd68bb6189c209d?
     s=32&d=mm&r=g)
 33.  [Grant Norwood](https://profiles.wordpress.org/grantnorwood/)  11:59 pm _on_ 
     January 7, 2013
 34. Thanks, Mark. This is a great goal, and worthy of the urgency you’ve expressed!
     Since you mentioned post revisionsRevisions The WordPress revisions system stores
     a record of each saved draft or published update. The revision system allows you
     to see what changes were made in each revision by dragging a slider (or using 
     the Next/Previous buttons). The display indicates what has changed in each revision.,
     I’d like to recommend that we think about how to better compare post/page/CPT 
     revisions within the rich text editor. As it is currently implemented, non-technical
     users have difficulty comparing large amounts of plain-text and raw HTMLHTML HyperText
     Markup Language. The semantic scripting language primarily used for outputting
     content in web browsers., and often give up immediately when using the compare
     feature. Developers are accustomed to the unified diff format, but we’re the only
     ones.
 35. Could we take inspiration from the review/editing/comparison tools used in other
     popular copy-editing apps (i.e., MS Word) that would make a copywriter feel more
     at home when comparing content revisions?
 36.  * ![](https://secure.gravatar.com/avatar/e05110ddfc422ecfc3c68f61f2b08a404343ef8514fed12b460fc9c9aaa47d27?
        s=32&d=mm&r=g)
      *  [Helen Hou-Sandi](https://profiles.wordpress.org/helen/)  12:11 am _on_ January
        8, 2013
      * Separate feature 🙂 [https://make.wordpress.org/core/2013/01/07/wordpress-3-6-revisions/](https://make.wordpress.org/core/2013/01/07/wordpress-3-6-revisions/)
 37. ![](https://secure.gravatar.com/avatar/754fc1043c779a984aa268991a5f2d533cfaf053b733195ff2213be7ba0e5be3?
     s=32&d=mm&r=g)
 38.  [Gabriel Koen](https://profiles.wordpress.org/mintindeed/)  9:18 pm _on_ January
     9, 2013
 39. I’d like to lend a hand with this, I can provide user insight (our dev team has
     been fielding issues regarding this topic for a few years from a large staff of
     writers) as well as do PHPPHP The web scripting language in which WordPress is
     primarily architected. WordPress requires PHP 7.4 or higher and JSJS JavaScript,
     a web scripting language typically executed in the browser. Often used for advanced
     user interfaces and behaviors. coding for it.
 40.  * ![](https://secure.gravatar.com/avatar/ba62bd9438e4b28c6992ed05912f05c528bb97b5c3eef0369297fdc8a026083b?
        s=32&d=mm&r=g)
      *  [Mike Bijon](https://profiles.wordpress.org/mbijon/)  12:46 am _on_ January
        13, 2013
      * Definitely loopLoop The Loop is PHP code used by WordPress to display posts.
        Using The Loop, WordPress processes each post to be displayed on the current
        page, and formats it according to how it matches specified criteria within 
        The Loop tags. Any HTML or PHP code in the Loop will be processed on each post.
        [https://codex.wordpress.org/The_Loop](https://codex.wordpress.org/The_Loop)
        Gabriel in on this, I’ve been using his ‘PMC Post Savior’ pluginPlugin A plugin
        is a piece of software containing a group of functions that can be added to
        a WordPress website. They can extend functionality or add new features to your
        WordPress websites. WordPress plugins are written in the PHP programming language
        and integrate seamlessly with WordPress. These can be free in the WordPress.
        org Plugin Directory [https://wordpress.org/plugins/](https://wordpress.org/plugins/)
        or can be cost-based plugin from a third-party. recently and it’s been a huge
        help in preventing lost posts: [https://github.com/Penske-Media-Corp/pmc-post-savior](https://github.com/Penske-Media-Corp/pmc-post-savior).
      * The best part about Post Savior is the UXUX User experience rethink. Instead
        of a load of JSJS JavaScript, a web scripting language typically executed in
        the browser. Often used for advanced user interfaces and behaviors. and localStorage
        it allows re-login over the top of the post interface. Really simplified the
        JS/localStorage fixes suggested on Daniel’s blogblog (versus network, site):
        [http://danielbachhuber.com/2012/05/01/notify-when-logged-out/](http://danielbachhuber.com/2012/05/01/notify-when-logged-out/)
      * …also worth checking out the discussion on that post too. Having the JS/storage-
        type fixes might be needed for full protection on mobile browsers.
 41. ![](https://secure.gravatar.com/avatar/ba62bd9438e4b28c6992ed05912f05c528bb97b5c3eef0369297fdc8a026083b?
     s=32&d=mm&r=g)
 42.  [Mike Bijon](https://profiles.wordpress.org/mbijon/)  12:49 am _on_ January 13,
     2013
 43. I’d like to help with this during this cycle too.
 44. Since I’m time-limited to being effective on only 1-2 tickets per cycle, I be 
     happy to help with tests and testing if time there would be valuable.

Comments are closed.

# Post navigation

[← WordPress 3.6: the Post Formats UI feature](https://make.wordpress.org/core/2013/01/07/wordpress-3-6-the-post-formats-ui-feature/)

[WordPress 3.6: Editorial Flow →](https://make.wordpress.org/core/2013/01/07/wordpress-3-6-edit-flow/)