我有一个 Ninja Forms 表单,它要求提供电子邮件地址和一个 optin 复选框。用户提交后,它会打开一个带有后续表单的弹出窗口(使用插件 Popup Maker),要求用户输入更多(可选)详细信息。由于后续表单有自己的提交表,我想将第一个表单的电子邮件地址传递给弹出的后续表单,以便用户不必再次输入。理想情况下,它将所有这些信息保存到一个提交表中,但我猜 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被保存。
对于后续表单,我在主题中有这个,它应该在对后续表单进行任何其他处理之前用 cookie 的值functions.php
填充隐藏的表单字段(字段键是):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 文档中找不到这方面的信息。