[英]Wordpress: Ninja Forms pass form data to popup form
我有一个 Ninja Forms 表格,要求提供 email 地址和一个选择复选框。 用户提交后,它会打开一个带有后续表单的弹出窗口(使用插件 Popup Maker),要求用户输入更多(可选)详细信息。 由于后续表单有自己的提交表,我想将第一个表单的email地址传递给弹出的后续表单,这样用户就不用再输入了。 理想情况下,它将所有这些信息保存到一个提交表中,但我猜 Ninja Forms 不是那样构建的(?)。
使用提交处理挂钩 ( http://developer.ninjaforms.com/codex/submission-processing-hooks/ ),我将以下代码添加到主题的functions.php
中。php:
add_action( 'ninja_forms_after_submission', 'ninja_forms_save_email_to_cookie' );
function ninja_forms_save_email_to_cookie( $form_data ){
$cookie_name = "nl_email";
$cookie_value = $form_data;
setcookie($cookie_name, $cookie_value); // Session cookie.
}
但是没有cookie被保存。
对于后续表单,我在主题的functions.php
中有这个,它应该在对后续表单进行任何其他处理之前用 cookie 的值填充一个隐藏的表单字段(字段键是email_1519816442526
):
add_filter( 'ninja_forms_submit_data', 'ninja_forms_submit_followup' );
function ninja_forms_submit_followup( $form_data ) {
$cookie_name = "nl_email";
if(!isset($_COOKIE[$cookie_name]) && $form_data['id'] == 2) {
$form_data['fields']['email_1519816442526']['value'] = $_COOKIE[$cookie_name]; // Update the submitted field value.
}
return $form_data;
}
提交挂钩是集成此功能的正确点吗? 还是通过自定义操作更好地完成? 自定义操作是在functions.php
还是其他地方定义的? 我在 Ninja Forms 文档中找不到这方面的信息。
您需要查看 NinjaDev 文档,其中提供了我们可以使用 JS 更改字段值的方法。 我们需要传递值并触发更改事件。
请参阅 此处的说明
我也需要这个,所以我研究并实现了这个。 我知道我迟到了,但如果有人从中受益,那么值得在这里分享。
工作代码如下:
<!-- HTML Code Starts -->
<form class="short-form" method='post'>
<input type="email" placeholder="Enter email" value="" id="shortEmail">
<input type="button" class="popup-class-name" name="Proceed" value="Proceed" onclick="passValue();">
</form>
<!-- HTML Code Ends -->
<!-- JS Script Starts -->
function passValue() {
var shortFormEmail, longFormEmail;
var fieldID = 11; // Target ID of the long form Email field
shortFormEmail = document.getElementById('shortEmail');
longFormEmail = shortFormEmail.value;
jQuery('#nf-field-' + fieldID).val(longFormEmail).trigger('change'); //from ninja Dev
// This will not work on any online IDE. Try it in actual ninja forms environment
}
<!-- JS Script Ends -->
这仅适用于 Ninja Forms 环境。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.