我想通过循环外的id获取帖子内容,所以我使用以下代码:
echo get_post_field('post_content', $postid);
它工作正常,但是,如果帖子包含任何短代码,则短代码无法正常工作。它只将短代码作为纯文本回显。
示例:我在编辑器中使用以下代码在图像中显示图像和标题文本:
[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]
但是当我使用函数get_post_field()
获取此帖子内容时,它显示:
[caption id="attachment_23" align="alignnone" width="300"]this is caption[/caption]
任何解决方案?
N.B:我使用ajax来获取内容
答案 0 :(得分:19)
这将有效:
echo do_shortcode(get_post_field('post_content', $postid));
答案 1 :(得分:10)
您需要在显示内容之前对其进行过滤,因此请尝试以下代码:
echo apply_filters( 'the_content', get_post_field('post_content', $postid) );
<强>更新强>
您无法使用挂钩到wp_ajax
的ajax调用输出短代码。
WP Ajax
通过admin.php
运行公开和已关闭的通话。这意味着您无法访问整个wp环境,例如do_shortcode()
内的/wp-includes/shortcodes.php
。
答案 2 :(得分:2)
这适合我。
echo apply_filters('the_content',get_post_field('post_content',$ postid));
正如我在循环之外做的那样。