Disable autosave in core code, block database entry
-
I have been rebuilding my website offline for at least 6 months now taking every step to keep the database clean. Most importantly the wp_post data entry auto-increment post id low and not waste them. I’m sure people will tell me it doesn’t matter but I don’t like seeing large post id numbers in my links. I recently moved online and noticed the common suggestion to disable autosave doesn’t stop the first autosave. Since I am copy-n-pasting content to the website I don’t want the autosave wasting post id numbers. I have seen other comments about this issue but they imply we have to deal with it. I myself am willing to hack the WordPress core code. I am asking if anyone can suggest a safe way to block where it creates these initial autosaves. I am including the autosave code that I assume is what I need to edit.
function wp_create_post_autosave( $post_data ) { if ( is_numeric( $post_data ) ) { $post_id = $post_data; $post_data = $_POST; } else { $post_id = (int) $post_data['post_ID']; } $post_data = _wp_translate_postdata( true, $post_data ); if ( is_wp_error( $post_data ) ) { return $post_data; } $post_data = _wp_get_allowed_postdata( $post_data ); $post_author = get_current_user_id(); // Store one autosave per author. If there is already an autosave, overwrite it. $old_autosave = wp_get_post_autosave( $post_id, $post_author ); if ( $old_autosave ) { $new_autosave = _wp_post_revision_data( $post_data, true ); $new_autosave['ID'] = $old_autosave->ID; $new_autosave['post_author'] = $post_author; $post = get_post( $post_id ); // If the new autosave has the same content as the post, delete the autosave. $autosave_is_different = false; foreach ( array_intersect( array_keys( $new_autosave ), array_keys( _wp_post_revision_fields( $post ) ) ) as $field ) { if ( normalize_whitespace( $new_autosave[ $field ] ) !== normalize_whitespace( $post->$field ) ) { $autosave_is_different = true; break; } } if ( ! $autosave_is_different ) { wp_delete_post_revision( $old_autosave->ID ); return 0; } /** * Fires before an autosave is stored. * * @since 4.1.0 * * @param array $new_autosave Post array - the autosave that is about to be saved. */ do_action( 'wp_creating_autosave', $new_autosave ); return wp_update_post( $new_autosave ); } // _wp_put_post_revision() expects unescaped. $post_data = wp_unslash( $post_data ); // Otherwise create the new autosave as a special post revision. return _wp_put_post_revision( $post_data, true ); }
- The topic ‘Disable autosave in core code, block database entry’ is closed to new replies.