I got it! Buuuuut I had to edit 2 core files, yes! 2 core files :(

I know is not a cool plugin hack, but maybe a cool patch for WP, Im using 3.3.1 version.

Well, here is my little hack/contribution:


1 Comment:


2 Change:

$post = get_default_post_to_edit( $post_type, true );
$post_ID = $post->ID;


$post       = array();
$post_ID    = 0;


1 Change:

if ( isset( $_GET['post'] ) )
    $post_id = $post_ID = (int) $_GET['post'];
elseif ( isset( $_POST['post_ID'] ) )
    $post_id = $post_ID = (int) $_POST['post_ID'];
    $post_id = $post_ID = 0;


if ( isset( $_GET['post'] ) ) {

    $post_id = $post_ID = (int) $_GET['post'];

} elseif ( isset( $_POST['post_ID'] ) ) {

    if ( empty($_POST['post_ID']) ) {

        $post_type = wp_kses($_POST['post_type']);

        if( !post_type_exists($post_type) ) {

            $post_type = 'post';


        check_admin_referer('update-' . $post_type . '_' . (int) $_POST['post_ID']);

        global $user_ID;

        $defaults = array(
                            'post_status'   => 'draft',
                            'post_type'     => $post_type,
                            'post_author'   => (int) $user_ID,

        $postarr    = wp_parse_args( $_POST, $defaults );

        $post_ID    = wp_insert_post($postarr);

        $post_id    =  (int) $post_ID;



    } else {

        $post_id = $post_ID = (int) $_POST['post_ID'];


} else {

    $post_id = $post_ID = 0;


I am using JQuery to hide: add media stuff. Just only a unique ID entry is created in posts table (and not a bunch of useless Auto Draft entries related) and media stuff will be visible after user manually saves current post.

Rare behavior: When a user logins for the first time and is redirected to Dashboard, WP creates an Auto Draft entry in posts table, hmmm, crazy! Somebody knows why it works like that?

A better solution: perhaps not altering at any chance core files? It will be a great one! For example, with a checkbox in Settings to check or uncheck if we want the "autosave" feature or not (get_option). Somebody else wants to apply the patch?

Thanks in advance.

  • the "quick press" dash widget is the one responsible, you must unset all "core" widgets with some code in functions.php, and they wont let us disable on post-new.php
    – nodws
    Feb 20, 2022 at 7:50

1 Answer 1


Read the thread Disable/ Stop "auto-draft" posts on wp-hackers to understand why this is a very bad idea.

Let me quote the explanations from @Otto:

Auto-drafts exist because of the fact that multiple users can create new posts at the same time. If two people enter post-new at roughly the same moment, then have their first autosaves occur nearly simultaneously, then there is a race condition that can cause one of them to get back the wrong post ID, which will cause a post to be overwritten/lost when they then continue editing the post.

The auto-draft creates the post and gets the ID of the new post before the editing screen is displayed, thus preventing two simultaneous authors from accidentally having the same post ID in the data in their browser.


Auto-drafts are automatically deleted after 7 days of going unused. They're self-cleaning, basically. No need to worry about them.

They also go away when the first auto-save occurs while writing a new post.


You should disable the Quick draft on the admin page, because that creates a new auto-draft whenever you load it.

Besides that, you solve a non-existent problem in a way that makes further updates impossible. Stop wasting your valuable time, do something useful instead. :)

  • I thought MySQL can handle that, but is nice to learn about it from WP point of view. Cool to know about self-cleaning. Well Im going to do something useful as sleep a couple of hours. Thanks. But I still think a lot of IDs in post table is a kind of nasty solution, maybe Im 100% wrong :) Mar 4, 2012 at 6:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.