首页 文章

从Wordpress Contact Form 7提交到成功页面发送变量

提问于
浏览
2

我在Wordpress 3.5上使用Contact Form 7 .

目前,当用户提交邮件时,通过在“其他设置”字段中使用以下内容将其重定向到成功页面:

on_sent_ok: 'location.replace("http://www.example.org/success-page");'

我希望能够使用字段中的输入自定义成功页面的输出,例如:

on_sent_ok: 'location.replace("http://www.example.org/success-page?name=yourname");'

我希望通过将常用的Contact Form 7短代码放入附加设置,它可能已经发送了字段值,但事实并非如此 .

任何人都可以建议我如何从联系表格7获取字段值到网址,或者作为$ _POST参数发送?我想可能需要一些javascript才能做到这一点 .

4 回答

  • 0

    这是可能的,但您需要将联系表单中的已发布数据保存到会话并在那里显示 .

    将其添加到您的functions.php中

    add_action('wpcf7_mail_sent', 'save_cf7_data');
    
    
    function save_cf7_data($cf) 
    {
    
        if(session_id() == '') {
           session_start();
        }
    
        $current_submission = WPCF7_Submission::get_instance();
    
        $_SESSION['cf7_submission'] = $current_submission->get_posted_data();
    
    
    }
    

    您的成功页面只需要打印会话var,如:

    echo $_SESSION['cf7_submission']['name'];
    

    就这样 .

  • 2

    另一种选择是使用jQuery或Javascript并在提交时捕获表单 . 捕获表单后,您可以序列化params并将它们传递给自定义页面以捕获它们并使用它们执行操作 .

    jQuery的示例:

    jQuery(document).ready(function($) {
        $('.wpcf7-form').each(function () {
            $(this).on('submit', function (e) {
                e.preventDefault();
    
                $.ajax({
                    type: 'POST',    // Can also choose GET instead
                    url: 'forms/getParams',
                    data: $(this).serialize(),
                    dataType: "json",
                    success: function (data) {
                        $(this)[0].reset();    // Optional in case you want to clear the form on success
                    },
                    error: function (data, errorThrown) {
                        console.log(errorThrown);
                    }
                });
    
            });
        });
    });
    
  • 1

    “附加设置”代码是javascript,因此在浏览器的上下文中运行 . 这意味着您可以使用普通的javascript代码轻松访问表单数据

    例如 on_sent_ok: 'location.replace("http://www.example.org/success-page?name=" + jQuery("input[name=name]").val());'

  • 1

    我认为你应该使用$ _REQUEST ['name'];用于在成功页面上获取post变量 .

相关问题