【问题标题】:Contact Form 7 redirect with on_sent_ok doesn't work?带有 on_sent_ok 的联系表格 7 重定向不起作用?
【发布时间】:2023-03-29 15:33:02
【问题描述】:

我尝试使用on_sent_ok 在为 Contact Form 7(Wordpress 插件)提交表单后重定向,但由于某种原因它不起作用:

on_sent_ok: "location.replace('http://www.company.com/thank-you/');"

为什么这不起作用?

我使用的是 CF7 版本 2.2.1 和 Wordpress 3.5.0。

【问题讨论】:

标签: javascript wordpress contact-form-7


【解决方案1】:

我为此使用以下代码。我把它放在一行中只是为了节省几个字符。如有必要,您仍然可以使用 is_page 或其他东西,以便只为还包含表单的页面输出 JavaScript。

/* Inline script for redirect cf7 to thank you page */
// https://contactform7.com/redirecting-to-another-url-after-submissions/
add_action('wp_footer', 'cf7__redirect_thankyoupage');
function cf7__redirect_thankyoupage() {
    ?><script>document.addEventListener('wpcf7mailsent',function(event) {location='/thank-you';}, false );</script><?php
}

如果您正在使用 WPML 并且只想将其输出为一种语言,那么您可以使用以下代码:

if (null !== ICL_LANGUAGE_CODE && ICL_LANGUAGE_CODE == "en"){ ... }

最好将感谢页面设置为 Noindex(通过 Robots.txt / Meta)。

【讨论】:

    【解决方案2】:

    联系表格 7 感谢页面重定向 旧方法:不再推荐使用 on_sent_ok 挂钩。我有一个代码,你可以复制和粘贴。您可以在 functions.php 文件的底部添加该方法,添加以下代码:

    <pre>
    <code>
    add_action( 'wp_footer', 'mycustom_wp_footer' );
    
    function mycustom_wp_footer() {
    ?>
    <script type="text/javascript">
    document.addEventListener( 'wpcf7mailsent', function( event ) {
       if ( '97' == event.detail.contactFormId ) { 
        location = 'http://www.vizistata.com/affordable-logo-designs.php';
        } 
        else if ( '634' == event.detail.contactFormId ) { // 634 is the form id
            location = 'http://www.vizistata.com/#blog';
        } 
    
        else if ( '635' == event.detail.contactFormId ) { // 635 is the form id
            location = 'http://www.vizistata.com/#contact';
        } 
    
        else if ( '636' == event.detail.contactFormId ) { 
            location = 'http://www.vizistata.com/#services';
        } 
    
        else if ( '94' == event.detail.contactFormId ) { 
            location = 'http://www.vizistata.com/#about';
        } 
    
    
        else { // Sends submissions on all unaccounted for forms to the third thank you page
            location = 'http://www.vizistata.com/';
        }
    }, false );
    </script>
    <?php
    }</pre>
    </code>
    

    【讨论】:

    • 这应该出现在顶部,因为它是最新和推荐的解决方案。
    【解决方案3】:

    联系表 7 提交后重定向到另一个 URL

    首先,您需要在新版本上更新联系表 7,我在 v7.4.9 上尝试过,然后在任何页面中放置联系表短代码,并将此 JS 脚本放置在页面上的任何位置并更改需要重定向页面的 url提交后

    <script>
    document.addEventListener( 'wpcf7mailsent', function( event ) {
    location = 'http://example.com/';
    }, false );
    </script> 
    

    更多信息请点击联系表格7官方网站https://contactform7.com/redirecting-to-another-url-after-submissions/

    【讨论】:

      【解决方案4】:

      我在联系表格 7 最新版本 4.8.1 中遇到了同样的问题。

      最终使用自定义 jquery 代码解决了问题。

      if ($('.wpcf7-form.sent').length) {
            $(location).attr('href', 'http://www.example.com')
          }
      

      注意:Contact form 7 表单成功提交添加类“sent”到表单字段。

      【讨论】:

        【解决方案5】:

        我自己的 Wordpress 主题也有同样的问题。一小时后,我了解到忘记在footer.php 中添加&lt;?php wp_footer(); ?&gt;,因此无法加载重要的Contact 7 脚本。当我添加它时,一切正常。

        【讨论】:

          【解决方案6】:

          我尝试了两种解决方案:on_sent_ok 不起作用,添加重定向 javascript 也不起作用。 最终,我发现自己正在编辑“contact-form-7”的“modules”文件夹中的“submissions.php”文件。 寻找:private function submit() 在那里,寻找elseif ( $this-&gt;mail() 我评论了$this-&gt;response = $contact_form-&gt;message( 'mail_sent_ok' );,然后输入header("Location: www.somesite.com/"); 效果很好。

          【讨论】:

          • 谢谢!我有一个主题中有 21 个 JS 错误的客户端,它不允许我更新所述主题,这是使重定向工作的唯一解决方案 :)
          • @KerynGill - 我发布这个已经有一段时间了。我很高兴它有帮助。感谢您的支持!
          【解决方案7】:

          on_sent_ok 在联系表 7 中不起作用通常表示 Javascript 与您当前的 WordPress 主题或您正在使用的其他插件之一发生冲突 - 请参阅 Contact Form 7 Email Issues - 那里有一个链接涵盖 Javascript Conflicts强>。

          请记住,一个脚本中的问题可能会导致另一个脚本出现问题。 例如,一些 jQuery 错误可能会阻止 jQuery 处理任何更多的脚本,这会使罪魁祸首难以找到。

          您的插件或主题 javascript 文件中的 jQuery 错误可能会在 jQuery 处理到达 CF7 脚本之前停止。

          使用Firebug 或Chrome Dev Tools 详细检查Javascript 冲突。

          有关一般指导,请参阅 http://wiki.simple-press.com/installation/troubleshooting/plugin-conflicts/。

          【讨论】:

          • 谢谢。如何识别与插件或主题的冲突?我怎么知道这是否是冲突?
          • 将联系人表单从 2.1 版更新到 3.7 版(并将 Wordpress 更新到 3.8.1 版)后工作正常。
          【解决方案8】:

          试试这个...

          on_sent_ok: "location = 'http://example.com/';"
          

          在其他设置中

          【讨论】:

          • 同样的问题:Contact Form 7 似乎将这些不可见字符放在 url 之后:“%E2%80%8E”,然后告诉我 url 不存在。
          猜你喜欢
          • 2012-07-22
          • 2012-10-04
          • 2014-10-04
          • 2015-01-20
          • 2017-01-23
          • 2016-11-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多