【问题标题】:contact form 7 and contact form 7 success page redirect plugin conflicts联系表格 7 和联系表格 7 成功页面重定向插件冲突
【发布时间】:2016-12-15 07:23:52
【问题描述】:

我已经实现了这两个插件:

  • 联系表格 7,以及
  • 联系表 7 成功页面重定向。

这些插件有冲突。

首先,客户端验证不起作用。

其次,成功时它不会重定向到成功页面。

【问题讨论】:

    标签: javascript php wordpress


    【解决方案1】:

    如果您只想在消息成功后重定向用户,那么更好的方法是使用 javascript 挂钩。

    移除成功页面重定向插件。

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

    只需转到联系表 7 中的“附加设置”选项卡并粘贴此内容,不带任何前导空格,将您的成功页面网址替换为 example.com。

    【讨论】:

    • 确实成功 ajax 抛出 302 异常,并重定向页面 html
    • 你在移除成功页面重定向插件后尝试过这个吗? @ManS。
    • 客户确实想坚持使用那个插件
    【解决方案2】:

    要进行客户端验证,请将这些行放在 footer.php 中

    <script type='text/javascript' src='/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=3.5.2'></script>
    
    
    
    <script type='text/javascript' src='/wp-content/plugins/contact-form-7/includes/js/jquery.form.min.js?ver=3.40.0-2013.08.13'></script>
    
    
    
    <script type='text/javascript'>
    

    请自行复制语法,这是 cdata .>var _wpcf7 = {"loaderUrl":"/wp-content/plugins/contact-form-7/images/ajax-loader.gif","sending":"Sending .. ."}; ]]>

    现在在插件目录中的 cf7-success-page-redirects.php 中。

    改变这个功能

    function cf7_success_page_form_submitted( $contact_form ) {
    $contact_form_id = $contact_form->id();
    
    // Send us to a success page, if there is one
    $success_page = get_post_meta( $contact_form_id, '_cf7_success_page_key', true );
    if ( !empty($success_page) ) {
        $items = array();
        $items['mailSent'] = true;
        $items['redirectLink'] =get_permalink( $success_page );
        echo wp_json_encode( $items );
        die();
    }
    

    }

    现在在插件的联系表格7目录中找到js文件夹,然后查找script.php并替换这一堆代码。

    else if (1 == data.mailSent) {
            $responseOutput.addClass('wpcf7-mail-sent-ok');
            $form.addClass('sent');
    
            if (data.onSentOk) {
                $.each(data.onSentOk, function(i, n) { eval(n) });
            }
    
            $(data.into).trigger('wpcf7:mailsent');
            $(data.into).trigger('mailsent.wpcf7'); // deprecated
            location.assign(data.redirectLink);
    
    
    
        } 
    

    我已经在我的网站上为客户解决了这个问题,希望这对将来的人有所帮助。

    【讨论】:

      【解决方案3】:

      在 functions.php 中使用以下代码(位于主题 -> 主题名称文件夹中)。

      把它放在文件的末尾。

      add_action( 'wp_footer', 'mycustom_wp_footer' );
      
      function mycustom_wp_footer() {
      ?>
      <script type="text/javascript">
      document.addEventListener( 'wpcf7mailsent', function( e ) {
          var str = window.location.href;
          if( str.includes("flp") ){
              window.location.href = "http://www.WebsiteName.com/facebook-thank-you";
          } else if( str.includes("glp") ){
              window.location.href = "http://www.WebsiteName.com/google-thank-you";
          }
      }, false );
      </script>
      <?php
      }
      

      完美运行..

      【讨论】:

        猜你喜欢
        • 2013-09-01
        • 1970-01-01
        • 2023-03-22
        • 2017-01-12
        • 2017-09-28
        • 1970-01-01
        • 2021-10-26
        • 1970-01-01
        • 2017-10-02
        相关资源
        最近更新 更多