Publish future post and make sure post ID has future post status.

Invoked by cron ‘publish_future_post’ event. This safeguard prevents cron from publishing drafts, etc.

Signature

check_and_publish_future_post( $post_id )
post_id
 (int|WP_Post) Post ID or post object.

Return

(null) Nothing is returned. Which can mean that no action is required or post was published.

Source

function check_and_publish_future_post( $post_id ) {

	$post = get_post($post_id);

	if ( empty($post) )
		return;

	if ( 'future' != $post->post_status )
		return;

	$time = strtotime( $post->post_date_gmt . ' GMT' );

	// Uh oh, someone jumped the gun!
	if ( $time > time() ) {
		wp_clear_scheduled_hook( 'publish_future_post', array( $post_id ) ); // clear anything else in the system
		wp_schedule_single_event( $time, 'publish_future_post', array( $post_id ) );
		return;
	}

	return wp_publish_post($post_id);
}
WP Trac GitHub

Link here