wp_autosave() WordPress Function
The wp_autosave() function automatically saves a post or page as a draft whenever it is updated. This function is useful for making sure that your content is always saved, even if you forget to hit the "Save Draft" button.
wp_autosave( array $post_data ) #
Saves a post submitted with XHR.
Description
Intended for use with heartbeat and autosave.js
Parameters
- $post_data
(array)(Required)Associative array of the submitted post data.
Return
(mixed) The value 0 or WP_Error on failure. The saved post ID on success. The ID can be the draft post_id or the autosave revision post_id.
Source
File: wp-admin/includes/post.php
1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 | function wp_autosave( $post_data ) { // Back-compat. if ( ! defined( 'DOING_AUTOSAVE' ) ) { define( 'DOING_AUTOSAVE' , true ); } $post_id = (int) $post_data [ 'post_id' ]; $post_data [ 'ID' ] = $post_id ; $post_data [ 'post_ID' ] = $post_id ; if ( false === wp_verify_nonce( $post_data [ '_wpnonce' ], 'update-post_' . $post_id ) ) { return new WP_Error( 'invalid_nonce' , __( 'Error while saving.' ) ); } $post = get_post( $post_id ); if ( ! current_user_can( 'edit_post' , $post ->ID ) ) { return new WP_Error( 'edit_posts' , __( 'Sorry, you are not allowed to edit this item.' ) ); } if ( 'auto-draft' === $post ->post_status ) { $post_data [ 'post_status' ] = 'draft' ; } if ( 'page' !== $post_data [ 'post_type' ] && ! empty ( $post_data [ 'catslist' ] ) ) { $post_data [ 'post_category' ] = explode ( ',' , $post_data [ 'catslist' ] ); } if ( ! wp_check_post_lock( $post ->ID ) && get_current_user_id() == $post ->post_author && ( 'auto-draft' === $post ->post_status || 'draft' === $post ->post_status ) ) { // Drafts and auto-drafts are just overwritten by autosave for the same user if the post is not locked. return edit_post( wp_slash( $post_data ) ); } else { // Non-drafts or other users' drafts are not overwritten. // The autosave is stored in a special post revision for each user. return wp_create_post_autosave( wp_slash( $post_data ) ); } } |
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
3.9.0 | Introduced. |