我有一个Ninja Forms表单,要求提供电子邮件地址和一个optin复选框。在用户提交后,它会打开一个带有后续表单的弹出窗口(使用插件弹出式制作器),要求用户输入更多(可选)详细信息。由于后续表单有自己的提交表,我想将第一个表单的电子邮件地址传递给弹出式后续表单,以便用户不必再次输入。 理想情况下,它将所有这些信息保存到一个提交表中,但我猜Ninja Forms不是这样构造的(?)。
使用提交处理挂钩(http://developer.ninjaforms.com/codex/submission-processing-hooks/),我将以下代码添加到主题functions.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文档中找不到相关信息。