post_preview

Definition:
function post_preview() {}

Save draft or manually autosave for showing preview.

Return values

returns:URL to redirect to show the preview

Source code

function post_preview() {



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

	$status = get_post_status( $post_ID );

	if ( 'auto-draft' == $status )

		wp_die( __('Preview not available. Please save as a draft first.') );



	if ( isset($_POST['catslist']) )

		$_POST['post_category'] = explode(",", $_POST['catslist']);



	if ( isset($_POST['tags_input']) )

		$_POST['tags_input'] = explode(",", $_POST['tags_input']);



	if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) )

		unset($_POST['post_category']);



	$_POST['ID'] = $post_ID;

	$post = get_post($post_ID);



	if ( 'page' == $post->post_type ) {

		if ( !current_user_can('edit_page', $post_ID) )

			wp_die(__('You are not allowed to edit this page.'));

	} else {

		if ( !current_user_can('edit_post', $post_ID) )

			wp_die(__('You are not allowed to edit this post.'));

	}



	if ( 'draft' == $post->post_status ) {

		$id = edit_post();

	} else { // Non drafts are not overwritten.  The autosave is stored in a special post revision.

		$id = wp_create_post_autosave( $post->ID );

		if ( ! is_wp_error($id) )

			$id = $post->ID;

	}



	if ( is_wp_error($id) )

		wp_die( $id->get_error_message() );



	if ( $_POST['post_status'] == 'draft'  ) {

		$url = add_query_arg( 'preview', 'true', get_permalink($id) );

	} else {

		$nonce = wp_create_nonce('post_preview_' . $id);

		$url = add_query_arg( array( 'preview' => 'true', 'preview_id' => $id, 'preview_nonce' => $nonce ), get_permalink($id) );

	}



	return $url;

}

2577

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: