Occasionally, I’ll run into a situation where I need to call a post specifically using the get_post() function. get_post() returns a Post object, with a number of member variables – the one that stores the actual content of the post being post_content.
However, if you try just echoing $post->post_content, you’ll get completely unformatted text – which is frustrating, because WordPress uses a great visual text editor on the backend – it’s a shame to not take advantage of it. Fortunately, WordPress provides a filter to display the text just as it would be displayed in the the_content() function inside the loop. Here’s how it works:
To get the content formatted properly, we need to apply a filter (which is different from adding a filter – here, we’re registering it so that other filter functions can modify it before it’s displayed).
apply_filters('the_content', $post->post_content);
So, we’re just applying the the_content filter to the $post->post_content variable. Doing so means that any plugin which adds a filter function to the_content like this:
add_filter('the_content', 'my_content_manipulator');
function my_content_manipulator($content){
//do stuff here
return $content;
}
will be applied to your variable. Fortunately, it also means that the WordPress core functions which format the post content correctly can also work on it.

Subscribe
You could also use setup_postdata on the post object itself and then use the built-in display functions. Depends on your use case scenario, though.
BTW, the fact that I can’t tab from your comment reply textarea to the name (even though the name input comes after the textarea) is somewhat frustrating. Might want to fix the tab order.
I’ve always been a little fuzzy on how (and why) setup_postdata() works. I’ll have to look into it. Either way, thanks for the tip.
And the tab order is fixed now – I had it set up for all you dyslexic tabbers out there, who like tab to work exactly the opposite of how they expected – but I’ve had to give into the vocal minority