WordPress对内容运行过滤器以自动添加段落:wpautop
. 如果愿意,您可以从所有帖子内容中删除过滤器:
remove_filter(\'the_content\',\'wpautop\');
或者,您可以查看
Disabler 插件,可以为您做到这一点。
如果要从特定帖子中删除筛选器,可以执行以下操作:
add_filter(\'the_content\',\'maybe_remove_wpautop\',9);
function maybe_remove_wpautop($content) {
global $post;
// add post iDs for which you do not want autoparagraphs
$nowpautopposts = array(\'23\',\'47\');
if (in_array($post->ID,$nowpautopposts)) {remove_filter(\'the_content\',\'wpautop\');}
return $content;
}
还应注意,在
Text
和
Visual
书写屏幕上的选项卡。这是一个更复杂的问题,如果您想删除它,可以尝试
Preserve HTML Markup Plus 插件。
Update:
更新问题后,从内容中获取已处理HTML代码块的方法是使用以下内容:
// (if you don\'t already have the post object)
global $post;
$post = get_post($postid);
// apply the content filters to the post object contents
$content = apply_filters(\'the_content\', $post->post_content);
这将对帖子的内容应用现有的内容过滤器。
我添加了更好的做法,确保$post
从post ID发送到post对象,因为某些插件完全可能使用$post
对象,并且您希望确保(例如,前面给出的代码需要这样做)
有鉴于此,如果您想在没有插件内容过滤器的情况下获取内容,有时可能需要删除并重新添加某些插件内容过滤器,但您需要具体说明。例如,如果您确实希望处理后的内容不包含自动段落(例如,如果您想自己以不同的方式添加它们),您可以这样做:
remove_filter(\'the_content\',\'wpautop\');
$content = apply_filters(\'the_content\', $post->post_content);
$add_filter(\'the_content\',\'wpautop\');