You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ACF前端表单特定字段中允许Script标签?

解决ACF前端表单<script>标签被剥离的问题

问题原因

前端提交acf_form时,WordPress会通过wp_kses对用户输入做严格过滤,移除<script>这类风险标签;而WP-Admin后台中管理员权限的输入过滤规则更宽松,所以出现前后端差异。

解决方案

方案1:针对指定字段跳过过滤

使用ACF的acf/update_value钩子,对目标字段直接返回原始提交值,绕过过滤逻辑。需替换代码中的field_xxxxxx为你的ACF字段键(字段键可在ACF字段编辑页的「高级」选项中查看):

add_filter('acf/update_value/key=field_xxxxxx', 'preserve_script_tags_in_footer_field', 10, 3);
function preserve_script_tags_in_footer_field($value, $post_id, $field) {
    // 直接返回前端提交的原始值,跳过wp_kses过滤
    return wp_unslash($_POST['acf']['field_xxxxxx']);
}

方案2:安全允许<script>标签

如果不想完全禁用过滤,可通过wp_kses_allowed_html钩子,仅在前端提交ACF表单时,将<script>标签加入允许列表:

add_filter('wp_kses_allowed_html', 'allow_script_tags_for_frontend_acf_form', 10, 2);
function allow_script_tags_for_frontend_acf_form($allowed_tags, $context) {
    // 仅针对前端ACF表单提交生效
    if (!is_admin() && isset($_POST['acf'])) {
        // 允许<script>标签及常用属性
        $allowed_tags['script'] = array(
            'src' => true,
            'type' => true,
            'async' => true,
            'defer' => true,
        );
    }
    return $allowed_tags;
}

重要提醒

  • 仅对可信开放的前端表单(如仅登录用户可访问)使用上述方法,避免XSS攻击风险。
  • 代码需添加到主题的functions.php或自定义插件中,添加后请清除缓存测试效果。

内容的提问来源于stack exchange,提问作者nsilva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:22:32