WordPress中Contact Form7非指定表单提交重定向异常问题
问题分析
你的代码核心问题是表单ID的判断逻辑错误:
Contact Form7 的 wpcf7mailsent 事件中,event.detail.contactFormId 返回的是表单的纯数字ID(字符串或数字类型,比如 "370" 或 370),而你代码里用的是带前缀的 'contact-370' 做比较。
这就导致:哪怕是ID为370的表单,'contact-370' !== event.detail.contactFormId 的结果永远是 true,所以跳转逻辑会被触发,出现错误重定向的问题。
修正后的代码
把判断条件里的ID改成纯数字形式即可,同时优化弹出窗口的写法避免被浏览器拦截:
document.addEventListener('wpcf7mailsent', function (event) { // 用纯数字ID做判断,匹配你的contact-370表单的实际ID(即370) if ('370' !== event.detail.contactFormId) { // 用创建a标签模拟点击的方式,避免浏览器拦截新窗口 const redirectLink = document.createElement('a'); redirectLink.href = 'https://mycoolurl.com/'; redirectLink.target = '_blank'; document.body.appendChild(redirectLink); redirectLink.click(); document.body.removeChild(redirectLink); } }, false);
其他可选方案
如果你不想写JS,也可以给需要跳转的表单单独添加标识:
- 给目标表单添加自定义CSS类(比如
redirect-after-submit) - 修改事件监听逻辑,只针对带该类的表单触发跳转:
document.addEventListener('wpcf7mailsent', function (event) { const formElement = document.querySelector(`[data-id="${event.detail.contactFormId}"]`); if (formElement.classList.contains('redirect-after-submit')) { const redirectLink = document.createElement('a'); redirectLink.href = 'https://mycoolurl.com/'; redirectLink.target = '_blank'; document.body.appendChild(redirectLink); redirectLink.click(); document.body.removeChild(redirectLink); } }, false);
这种方式更灵活,后续新增需要跳转的表单,只需要添加CSS类即可,不用修改JS代码。
内容的提问来源于stack exchange,提问作者Labanino
相关产品推荐
相关产品推荐

