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


Top ↑

Parameters

$post_data

(array)(Required)Associative array of the submitted post data.


Top ↑

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.


Top ↑

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 ) );
    }
}


Top ↑

Changelog

Changelog
VersionDescription
3.9.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by the Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.

Show More