我正在尝试检索特定帖子的帖子内容:
$post = get_post(/* id */);
$content = $post->post_content;
但是,这将检索没有换行符的内容,并省略所有<p>
标签。
在不剥离<p>
标签的情况下检索帖子内容的正确方法是什么(如帖子页面或帖子编辑器的“ 文本 ”选项卡所示)?
我正在尝试检索特定帖子的帖子内容:
$post = get_post(/* id */);
$content = $post->post_content;
但是,这将检索没有换行符的内容,并省略所有<p>
标签。
在不剥离<p>
标签的情况下检索帖子内容的正确方法是什么(如帖子页面或帖子编辑器的“ 文本 ”选项卡所示)?
Answers:
到目前为止,这两个答案都是正确的,但似乎需要更彻底的答案。
如果使用此:
$content = wpautop( $post->post_content );
您正在应用一个将段落标记添加到帖子内容的功能。wpautop()
是挂接到的众多函数(有时包括插件函数)之一the_content
,因此,如果您这样做:
$content = apply_filters('the_content', $post->post_content);
您将通过所有默认情况下the_content
包含wpautop()
的过滤器来运行帖子内容。
最后,如果您处于循环中,则可以执行以下操作:
$content = apply_filters( 'the_content', get_the_content() );
实际上,这是第二个代码段的包装,但当然看起来更好。更新2018年9月1日:根据评论进行了修订。道具@timmb。
通常,我会说,这样做的首选“正确方法”是从头到尾,因为使用核心WP函数应该可以实现更多的向后兼容性(至少在理论上是如此)。唯一要做的其他决定就是您是否要允许WordPress和插件也修改帖子内容。如果是这种情况,请绝对使用第二或第三选项。
找到了解决方案:
$content = apply_filters('the_content', $post->post_content);
使用p标签获取帖子内容的第二种方法是
echo wpautop( $post->post_content );
$content = apply_filters('the_content', get_the_content);
吗?