WordPress.org

Make WordPress Core

Opened 3 years ago

Closed 3 years ago

#20169 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:
Milestone: Priority: normal
Severity: normal Version: 3.3.1
Component: Autosave Keywords: needs-patch
Focuses: Cc:

Description

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.

Change History (2)

comment:2 @dd323 years ago

  • Milestone Awaiting Review deleted
  • Resolution set to invalid
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.