我在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获取字段值到url,或者作为$ _POST参数发送?我想这可能需要一些javascript才能做到这一点。
答案 0 :(得分:2)
这是可能的,但您需要将联系表单中的已发布数据保存到会话并在那里显示。
将此添加到您的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'];
这就是全部。
答案 1 :(得分:1)
另一种选择是使用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);
}
});
});
});
});
答案 2 :(得分:1)
&#39>其他设置'代码是javascript,因此在浏览器的上下文中运行。这意味着您可以使用普通的JavaScript代码轻松访问表单数据
e.g。 on_sent_ok: 'location.replace("http://www.example.org/success-page?name=" + jQuery("input[name=name]").val());'
答案 3 :(得分:0)
我认为你应该使用$ _REQUEST ['name'];用于在成功页面上获取发布变量。