#20168 closed enhancement (invalid)
How to: Avoid a bunch of useless Auto Draftt ID entries related in posts table and disable autosave feature in 'post-new.php'?
| Reported by: | josoroma | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | General | Version: | 3.3.1 |
| Severity: | normal | Keywords: | |
| Cc: | Focuses: |
Description (last modified by )
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:
----------------------------------------
wp-admin/post-new.php
----------------------------------------
1 Comment:
//wp_enqueue_script('autosave');
2 Change:
$post = get_default_post_to_edit( $post_type, true );
$post_ID = $post->ID;
by:
$post = array();
$post_ID = 0;
----------------------------------------
wp-admin/post.php
----------------------------------------
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'];
else
$post_id = $post_ID = 0;
by:
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;
redirect_post($post_id);
exit;
} 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-->Writing to check or uncheck if we want the "autosave" feature or not. Somebody else wants to apply this patch?
Thanks in advance.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)
And for anyone who has come across this, Please don't re-open it, Instead, if you have a better solution, create a new ticket detailing the pro's and cons of that method.
Required reading priot to that however: The wp-hackers thread that led to this ticket: http://lists.automattic.com/pipermail/wp-hackers/2012-February/042398.html Otto's posts in that thread in particular ( 1 2 and 3) as well as the prior tickets: #11889, #11145, #11990
Auto-drafts were added to solve a real problem and provide the best User-Experience we can possibly do, they serve a real purpose, even if you don't physically see it, they work in the background to make your publishing dream come true. They are automatically Garbage-collected, so you will not have a extreme number in your database forever.