Question

I want to get the post content by id outside the loop, so i am using following code:

    echo get_post_field('post_content', $postid);

It works fine, however, if the post contains any shortcodes, the shortcodes don't work properly. It only echoes the shortcode as plain text.

Example: I'm using following code in editor to display image and caption text inder the image:

    [caption id="attachment_23" align="alignnone" width="300"]<img class="size-medium wp-image-23 " alt="" src="http://localhost/wordpress/wp-content/uploads/2014/03/Desert-300x225.jpg" width="300" height="225" /> this is caption[/caption]

But when i get this post content using function get_post_field(), Instead of displaying caption text, it displays:

    [caption id="attachment_23" align="alignnone" width="300"]this is caption[/caption] 

Any solution?

N.B: I am using ajax to get the contents

Was it helpful?

Solution

This will work:

echo do_shortcode(get_post_field('post_content', $postid));

Edit

If you want to forcefully output shortcode within Ajax, please see running shortcode inside AJAX request

OTHER TIPS

You need to filter your content before displaying it, so try the following code:

echo apply_filters( 'the_content', get_post_field('post_content', $postid) );

Update: You can't output shortcodes using ajax calls hooked into wp_ajax. WP Ajax runs both public as well as closed calls via admin.php. This means that you don't have access to the whole wp environment, such as do_shortcode(), which is inside /wp-includes/shortcodes.php.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top