+ $post = get_post( $post_id );
+
+ if ( ! current_user_can( 'edit_post', $post->ID ) ) {
+ return new WP_Error( 'edit_posts', __( 'You are not allowed to edit this item.' ) );
+ }
+
+ if ( 'auto-draft' == $post->post_status )
+ $post_data['post_status'] = 'draft';
+
+ if ( $post_data['post_type'] != 'page' && ! 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 ) );
+ }