[wp-trac] [WordPress Trac] #20169: How to: Avoid a bunch of useless Auto Draftt ID entries related in posts table and disable autosave feature in 'post-new.php'?

WordPress Trac wp-trac at lists.automattic.com
Sun Mar 4 06:03:18 UTC 2012


#20169: How to: Avoid a bunch of useless Auto Draftt ID entries related in posts
table and disable autosave feature in 'post-new.php'?
-------------------------+-----------------------------
 Reporter:  josoroma     |      Owner:
     Type:  enhancement  |     Status:  new
 Priority:  normal       |  Milestone:  Awaiting Review
Component:  Autosave     |    Version:  3.3.1
 Severity:  normal       |   Keywords:  needs-patch
-------------------------+-----------------------------
 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 Setting to check or
 uncheck if we want the "autosave" feature or not (get_option). Somebody
 else wants to apply the patch?

 Thanks in advance.

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/20169>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list