Wordpress快捷码输出缓冲在WP Admin中保存帖子时呈现内容

Wordpress快捷码输出缓冲在WP Admin中保存帖子时呈现内容,wordpress,buffer,shortcode,Wordpress,Buffer,Shortcode,我有一个给我带来问题的WP短代码 基本上,短代码只是使用几个参数从另一篇文章中提取内容。然后加载一个部分模板 保存包含短代码的页面时,WP Admin中会出现问题。保存页面更新时,实际上保存正确,但生成的页面是一个输出短代码内容的页面 我在get_template_part()周围使用输出缓冲有两个原因:1。因此,我的代码-和-2中只有一个模板实例。因为模板实际上是相当重要的,将所有模板附加到输出变量将是一项艰巨的任务 除了保存页面外,短代码在任何方面都可以正常工作 这里有一段视频演示了这个问题

我有一个给我带来问题的WP短代码

基本上,短代码只是使用几个参数从另一篇文章中提取内容。然后加载一个部分模板

保存包含短代码的页面时,WP Admin中会出现问题。保存页面更新时,实际上保存正确,但生成的页面是一个输出短代码内容的页面

我在get_template_part()周围使用输出缓冲有两个原因:1。因此,我的代码-和-2中只有一个模板实例。因为模板实际上是相当重要的,将所有模板附加到输出变量将是一项艰巨的任务

除了保存页面外,短代码在任何方面都可以正常工作

这里有一段视频演示了这个问题:

这是我的代码:

函数获取主页内容($atts){
$main_page_id=$atts['main_page_id'];
$section=$atts['section'];
$people_display_option=$atts['people_display_option'];
$GLOBALS['sc_display_option']=$people_display_option;
ob_start();
如果(有行('flexible_content',$main_page_id)):
while(have_rows('flexible_content',$main_page_id)):the_row();
如果($section==“议程”){
获取模板部分(“部分/议程”);
}
如果($section=='people\u cards'){
获取模板零件(“零件/人员卡片”);
}
结束时;
endif;
ob_end_flush();
$output=ob_get_contents();
ob_end_clean();
返回$output;
}

添加快捷码(“获取主页内容”、“获取主页内容”)在我看来,
ob\u end\u flush()
是不需要的,是多余的。这可能会导致OB发送两次,导致该代码出现在屏幕上

如果你放弃那条线,我很好奇你的问题是否仍然存在。另外,要了解您的确切用例的非常简化的版本,请查看以下博客:


我现在无法运行您的脚本,但在我看来,ob_end_flush()不是必需的,而且是多余的。这可能会导致OB发送两次,导致该代码出现在屏幕上。如果你放弃那条线,我很好奇你的问题是否仍然存在。另外,对于你的确切用例的一个非常简化的版本,请查看这篇博文:啊,伙计,@GregBurkett!您完成了将此输出转换为字符串的操作,为我节省了数小时的时间。感谢上帝,你比我更了解输出缓冲。如果你把这个复制到答案上,我一定会给你评分的。谢谢你的帮助!