diff -rupN wp-includes/post.php new/post.php
--- wp-includes/post.php	2010-04-12 11:51:43.000000000 -0400
+++ new/post.php	2010-04-12 11:46:33.000000000 -0400
@@ -4634,3 +4634,50 @@ function _show_post_preview() {
 		add_filter('the_preview', '_set_preview');
 	}
 }
+
+/**
+ * Retrieve content from the specified post.
+ *
+ * get_the_content() assumes setup_postdata() has previously been called.
+ * In order to call get_the_content() without side-effects you must first
+ * collect up the values of the global variables assigned in setup_postdata()
+ * and afterwards restore those global variables.
+ *
+ * @since 3.1.0
+ *
+ * @uses save_postdata(), setup_postdata(), restore_postdata(), get_the_content()
+ *
+ * @param object $post Post data.
+ * @param string $more_link_text Optional. Content for when there is more text.
+ * @param string $stripteaser Optional. Teaser content before the more text.
+ * @return string The Post's content
+ */
+function get_post_content($post, $more_link_text = null, $stripteaser = 0) {
+	$save = save_postdata();
+	setup_postdata($post);
+	$the_content = get_the_content($more_link_text,$stripteaser);
+	restore_postdata($save);
+	return $the_content;
+}
+/**
+ * Retrieve the excerpt from the specified post.
+ *
+ * get_the_excerpt() assumes setup_postdata() has previously been called.
+ * In order to call get_the_excerpt() without side-effects you must first
+ * collect up the values of the global variables assigned in setup_postdata()
+ * and afterwards restore those global variables.
+ *
+ * @since 3.1.0
+ *
+ * @uses save_postdata(), setup_postdata(), restore_postdata(), get_the_excerpt()
+ *
+ * @param object $post Post data.
+ * @return string The Post's excerpt
+ */
+function get_post_excerpt($post) {
+	$save = save_postdata();
+	setup_postdata($post);
+	$the_excerpt = get_the_excerpt();
+	restore_postdata($save);
+	return $the_excerpt;
+}
diff -rupN wp-includes/query.php new/query.php
--- wp-includes/query.php	2010-04-12 11:52:13.000000000 -0400
+++ new/query.php	2010-04-12 11:22:15.000000000 -0400
@@ -2808,6 +2808,30 @@ function wp_old_slug_redirect() {
 }
 
 /**
+ * Save global post data into an array for later restore.
+ *
+ * @since 3.1.0
+ *
+ * @return array Values of selected global variables to be restored by restore_postdata().
+ */
+function save_postdata() {
+	global $id, $authordata, $day, $currentmonth, $page, $pages, $multipage, $more, $numpages;
+	$postdata = array($id, $authordata, $day, $currentmonth, $page, $pages, $multipage, $more, $numpages);
+	return $postdata;
+}
+/**
+ * Save global post data into an array for later restore.
+ *
+ * @since 3.1.0
+ *
+ * @param array Values of selected global variables collected by save_postdata().
+ */
+function restore_postdata($postdata) {
+	global $id, $day, $more, $post, $page, $pages, $numpages, $multipage, $authordata, $currentmonth;
+	list($id, $authordata, $day, $currentmonth, $page, $pages, $multipage, $more, $numpages) = $postdata;
+}
+
+/**
  * Set up global post data.
  *
  * @since 1.5.0
@@ -2850,4 +2874,5 @@ function setup_postdata($post) {
 
 	return true;
 }
+
 ?>
\ No newline at end of file
