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

use*_*122 10 php wordpress wordpress-theming wordpress-plugin shortcode

我想通过循环外的id获取帖子内容,所以我使用以下代码:

    echo get_post_field('post_content', $postid);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是,如果帖子包含任何短代码,则短代码无法正常工作.它只将短代码作为纯文本回显.

示例:我在编辑器中使用以下代码在图像中显示图像和标题文本:

    [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]
Run Code Online (Sandbox Code Playgroud)

但是当我使用函数获取此帖子内容时get_post_field(),它显示:而不是显示标题文本.

    [caption id="attachment_23" align="alignnone" width="300"]this is caption[/caption] 
Run Code Online (Sandbox Code Playgroud)

有解决方案吗

注意:我正在使用ajax来获取内容

Rah*_*zir 20

这将有效:

echo do_shortcode(get_post_field('post_content', $postid));
Run Code Online (Sandbox Code Playgroud)

  • @ user3396122您无法使用ajax输出短代码.因为在执行ajax请求时,`admin-ajax.php`不知道`shortcodes.php`文件.使用ajax请求时,您无权访问整个wp环境. (2认同)

and*_*tor 12

您需要在显示内容之前过滤内容,因此请尝试以下代码:

echo apply_filters( 'the_content', get_post_field('post_content', $postid) );
Run Code Online (Sandbox Code Playgroud)

更新: 您无法使用挂钩的Ajax调用输出短代码wp_ajax. WP Ajax通过公共和封闭电话运行admin.php.这意味着您无权访问整个wp环境,例如do_shortcode()内部/wp-includes/shortcodes.php.