
gravity forms 默认禁止在确认消息中直接插入 javascript,但可通过 `gform_confirmation_loaded` 事件配合代码片段插件,在不修改核心文件的前提下实现可控的延迟重定向。
在 Gravity Forms 中,出于安全考虑,其「文本型确认消息(Text Confirmation)」编辑器会自动过滤并移除
关键前提是:表单必须启用 AJAX 提交(即勾选「Enable AJAX」选项)。只有在 AJAX 模式下,Gravity Forms 才会触发 gform_confirmation_loaded 自定义事件,从而允许我们在确认内容渲染完成后执行自定义逻辑。
以下是推荐的完整实现步骤与代码:
-
安装并启用一个轻量级代码片段插件(无需 FTP 或管理员权限):
- Code Snippets(免费开源,广受信任)
- 或 WP Code Box(可视化友好)
新建代码片段,选择「Frontend only」作用域,粘贴以下优化后的 jQuery 脚本:
jQuery(document).ready(function($) {
$(document).on('gform_confirmation_loaded', function(event, formId) {
// ✅ 替换为你的实际表单 ID(可在表单编辑页 URL 中查看,如 .../post.php?post=123&action=edit → form ID = 123)
if (formId === 1) {
const redirectUrl = 'https://intranet.onyxcollection.com/shop-management/home/lav-accessory-casting/';
const delayMs = 3500; // 延迟 3.5 秒,确保后端计算(如 Google Sheets 公式刷新)完成
setTimeout(function() {
window.location.href = redirectUrl;
}, delayMs);
}
});
});✅ 注意事项与最佳实践:
- 请务必使用 jQuery(document).on(...) 而非 $(...).on(...),以确保事件委托生效(尤其适用于动态加载的表单);
- formId 必须严格匹配目标表单编号(整数类型),建议用 === 进行全等判断;
- 若页面含多个 Gravity Forms,请为每个表单单独添加 if (formId === X) 分支,避免误触发;
- 不要依赖 window.location = ... 简写,统一使用 window.location.href = ... 保证兼容性;
- 如需用户感知延迟过程,可在确认消息中添加提示文字,例如:“正在更新数据… 3秒后跳转”。
? 为什么此方案更可靠?
它绕开了 Gravity Forms 的富文本过滤机制,将逻辑完全托管于 WordPress 主题/插件层;同时利用官方支持的钩子事件,具备良好的可维护性与升级兼容性——即使 Gravity Forms 更新,该事件仍长期受官方文档保障。
最后提醒:若你的表单未启用 AJAX(即提交后整页刷新),则 gform_confirmation_loaded 不会触发。此时需先在表单设置 → 「Advanced」选项卡中勾选 “Enable AJAX”,这是本方案生效的前提条件。










