Wordpress:使用函数get_post_field()获取发布内容时,短代码不起作用

时间:2014-03-08 13:47:05

标签: php wordpress wordpress-plugin wordpress-theming shortcode

我想通过循环外的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来获取内容

3 个答案:

答案 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));

正如我在循环之外做的那样。