WordPress ACF中iframe无法显示问题求助
WordPress中IFrame前端被剥离但后台可视化可见的原因及解决办法
常见原因
- WordPress默认安全过滤:WP自带的
wp_kses函数会在前端输出时过滤掉iframe这类被判定为“风险”的标签,但后台编辑器的过滤规则更宽松,所以后台能正常显示,前端被剥离。 - ACF富文本字段的二次过滤:如果用了ACF的WYSIWYG字段,ACF默认会继承WP的
wp_kses_post规则过滤内容,后台编辑器里能看到是因为编辑状态下的过滤不生效,但前端调用字段时过滤会触发。 - 主题/安全插件的额外限制:不少安全插件会主动移除iframe防止XSS;部分主题的模板代码里会用
strip_tags或自定义函数强制清理iframe标签。
解决办法
放行WP默认过滤
把这段代码加到主题的functions.php里,允许前端输出iframe及必要属性:
add_filter('wp_kses_allowed_html', 'allow_iframe_frontend', 10, 2); function allow_iframe_frontend($allowed_tags, $context) { if ($context === 'post') { $allowed_tags['iframe'] = array( 'src' => true, 'width' => true, 'height' => true, 'frameborder' => true, 'allowfullscreen' => true, // 按需添加其他需要的属性 ); } return $allowed_tags; }
处理ACF字段的情况
两种方式二选一:
- 编辑ACF字段时,找到「显示选项」,把「自动格式化」改成「无」,跳过ACF的过滤。
- 调用字段时用
get_field('你的字段名', false, false),第三个参数设为false,禁用ACF的默认过滤。
排查主题/插件
- 临时禁用所有安全插件,测试iframe是否正常输出,确认是不是插件导致的拦截。
- 检查主题模板里的内容调用代码,比如有没有用
wp_strip_all_tags()这类强制清除标签的函数,换成the_content()或者保留必要标签的写法。
内容的提问来源于stack exchange,提问作者JI-Web
相关产品推荐
相关产品推荐

