Ninja 表单 - 如何在感谢页面上向用户显示提交的数据?
Ninja forms - how to show submitted data to the user on thank you page?
我有一个 Wordpress 网站,我正在使用 Ninja Forms 插件制作一个简单的表单。
我正在寻找一种方法来创建一个“感谢”页面,该页面将显示用户提交的摘要。
到目前为止,我所做的是在“谢谢”页面(忍者表单重定向操作)url 中使用提交表单的键(例如 https://mywebsite.com/thank-you/?key=24)中的查询字符串。
我知道如何显示整个表单的数据(使用表单 ID),但我不知道如何使用此键仅显示来自该特定提交的数据。
您可以编写代码来检索提交的数据。
Ninja_Forms()->form()->get_sub( $key );
// Get all values for a Submission
$field_values = $sub->get_field_values();
将表单的重定向 url 设置为 http://example.com/thank-you-page/?key={form:id}:{submission:sequence}
代码提取表单 ID 和提交顺序。然后它获取该表单的字段,然后循环遍历表单的提交,查找传递的提交序列并显示它。
这是非常不安全的代码,因为它允许任何人查看提交内容。
add_filter( 'the_content', 'dcwd_display_ninja_forms_submission', 11 );
function dcwd_display_ninja_forms_submission( $content ) {
if ( !is_page('thank-you-page') ) { return $content; }
if ( array_key_exists( 'key', $_GET ) && preg_match( '/^(\d+):(\d+)/', $_GET['key'], $matches ) ) {
ob_start();
$form_id = $matches[1];
$sub_id = $matches[2];
$form_fields = Ninja_Forms()->form( $form_id )->get_fields();
$key_to_fieldname = array();
foreach ( $form_fields as $form_field ) {
$key_to_fieldname[ $form_field->get_setting( 'key' ) ] = $form_field->get_setting( 'label' );
}
unset( $key_to_fieldname[ 'submit' ] ); // Do not need 'Submit' info as there won't be any data in it.
//echo '<h2>Form Fields</h2><pre>', var_export( $key_to_fieldname, true ), '</pre>';
$subs = Ninja_Forms()->form( $form_id )->get_subs();
foreach ( $subs as $sub ) {
if ( $sub_id == $sub->get_seq_num() ) {
echo '<style>table, th, td { border: 1px solid #ccc; border-collapse: collapse; } th, td { padding: 1em; } th { font-weight: bold; }</style>';
echo '<table><tr><th>', implode( '</th><th>', array_values( $key_to_fieldname ) ), '</th></tr>';
$values = $sub->get_field_values();
echo '<tr>';
foreach ( $key_to_fieldname as $key => $name ) {
if ( array_key_exists( $key, $values ) ) {
echo '<td>', $values[ $key ], '</td>';
}
}
echo '</tr></table>';
return $content . ob_get_clean();
}
}
}
}
我有一个 Wordpress 网站,我正在使用 Ninja Forms 插件制作一个简单的表单。
我正在寻找一种方法来创建一个“感谢”页面,该页面将显示用户提交的摘要。
到目前为止,我所做的是在“谢谢”页面(忍者表单重定向操作)url 中使用提交表单的键(例如 https://mywebsite.com/thank-you/?key=24)中的查询字符串。
我知道如何显示整个表单的数据(使用表单 ID),但我不知道如何使用此键仅显示来自该特定提交的数据。
您可以编写代码来检索提交的数据。
Ninja_Forms()->form()->get_sub( $key );
// Get all values for a Submission
$field_values = $sub->get_field_values();
将表单的重定向 url 设置为 http://example.com/thank-you-page/?key={form:id}:{submission:sequence}
代码提取表单 ID 和提交顺序。然后它获取该表单的字段,然后循环遍历表单的提交,查找传递的提交序列并显示它。
这是非常不安全的代码,因为它允许任何人查看提交内容。
add_filter( 'the_content', 'dcwd_display_ninja_forms_submission', 11 );
function dcwd_display_ninja_forms_submission( $content ) {
if ( !is_page('thank-you-page') ) { return $content; }
if ( array_key_exists( 'key', $_GET ) && preg_match( '/^(\d+):(\d+)/', $_GET['key'], $matches ) ) {
ob_start();
$form_id = $matches[1];
$sub_id = $matches[2];
$form_fields = Ninja_Forms()->form( $form_id )->get_fields();
$key_to_fieldname = array();
foreach ( $form_fields as $form_field ) {
$key_to_fieldname[ $form_field->get_setting( 'key' ) ] = $form_field->get_setting( 'label' );
}
unset( $key_to_fieldname[ 'submit' ] ); // Do not need 'Submit' info as there won't be any data in it.
//echo '<h2>Form Fields</h2><pre>', var_export( $key_to_fieldname, true ), '</pre>';
$subs = Ninja_Forms()->form( $form_id )->get_subs();
foreach ( $subs as $sub ) {
if ( $sub_id == $sub->get_seq_num() ) {
echo '<style>table, th, td { border: 1px solid #ccc; border-collapse: collapse; } th, td { padding: 1em; } th { font-weight: bold; }</style>';
echo '<table><tr><th>', implode( '</th><th>', array_values( $key_to_fieldname ) ), '</th></tr>';
$values = $sub->get_field_values();
echo '<tr>';
foreach ( $key_to_fieldname as $key => $name ) {
if ( array_key_exists( $key, $values ) ) {
echo '<td>', $values[ $key ], '</td>';
}
}
echo '</tr></table>';
return $content . ob_get_clean();
}
}
}
}