我希望在循环之外通过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]
有解决办法吗?
注意:我正在使用ajax获取内容
这将有助于:
echo do_shortcode(get_post_field('post_content', $postid));
编辑
如果您想在Ajax中强制输出短代码,请参阅在AJAX请求中运行短代码
您需要在显示内容之前对其进行筛选,因此请尝试以下代码:
echo apply_filters( 'the_content', get_post_field('post_content', $postid) );
更新:您不能使用挂接到wp_ajax
中的ajax调用输出短代码。WP Ajax通过admin.php
运行公共和关闭调用。这意味着您无法访问整个wp环境,例如do_shortcode()
,它位于/wp-包括/shortcodes.php
中。