在重力形式确认期间(在表格成功填写并且用户提交表格之后)而不是仅显示确认文本时,我还想在确认文本下方显示确认文本和表格本身。
我不能在gform的确认设置上使用重定向来页面url或页面选项,因为用户通过短代码在各种页面上使用表单(某些em甚至通过do_shortcode进行硬编码),并且他计划增加更多。
这个想法是,在用户填写并提交表单后(无论表格驻留在哪个页面),表单数据将被提交,页面重新加载,显示确认消息并显示实际表单(当然所有数据都消失了,新鲜的状态)
提前致谢
答案 0 :(得分:2)
Jplus2的解决方案在函数末尾缺少return $form;
。
我还通过在邮件中添加短代码找到了一个更简单的解决方案:
add_filter( 'gform_pre_submission_filter' , "foo_show_confirmation_and_form" , 10 , 1 );
function foo_show_confirmation_and_form($form) {
$shortcode = '[gravityform id="' . $form['id'] . '" title="true" description="false"]';
if ( array_key_exists( 'confirmations' , $form ) ) {
foreach ( $form[ 'confirmations' ] as $key => $confirmation ) {
$form[ 'confirmations' ][ $key ][ 'message' ] .= $shortcode;
}
}
if ( array_key_exists( 'confirmation' , $form ) ) {
$form[ 'confirmation' ][ 'message' ] .= $shortcode;
}
return $form;
}
答案 1 :(得分:1)
这就是我做到的。
add_filter( 'gform_pre_submission_filter' , "foo" , 10 , 1 );
function foo ( $form ) {
global $post;
// Get current page url
$current_page_url = get_post_permalink( $post->ID );
if ( array_key_exists( 'confirmations' , $form ) ) {
foreach ( $form[ 'confirmations' ] as $key => $confirmation ) {
$form[ 'confirmations' ][ $key ][ 'type' ] = 'redirect';
$form[ 'confirmations' ][ $key ][ 'message' ] = '';
$form[ 'confirmations' ][ $key ][ 'url' ] = $current_page_url;
$form[ 'confirmations' ][ $key ][ 'queryString' ] = 'message=Form Data Saved';
}
}
if ( array_key_exists( 'confirmation' , $form ) ) {
$form[ 'confirmation' ][ 'type' ] = 'redirect';
$form[ 'confirmation' ][ 'message' ] = '';
$form[ 'confirmation' ][ 'url' ] = $current_page_url;
$form[ 'confirmation' ][ 'queryString' ] = 'message=Form Data Saved';
}
return $form;
}
挂钩到 gform_pre_submission_filter 过滤器,该挂钩的回调将收到 $ form 变量。
$ form 是一个数组,其中包含有关如何将其确认为子数组的详细信息。
它有2个 $ form ['确认'] ,包含为此特定gform注册的所有确认。
$ form ['confirmation'] ,包含要使用的“默认确认”的数据。更改两者,在我的情况下,我将其更改为'重定向'类型然后提供了重定向的网址。
我也添加了查询字符串数据,可以在这里添加空格,gform将负责转义。
这是在只有1个确认的gform上进行测试,这是默认确认。
这也在仅包含1 gform的页面上进行了测试。
如果你有一个包含多个gforms的页面,那么很简单,只需将有问题的gform的id添加到queryString即可。然后,更容易提取查询字符串并识别确认消息所属的格式。
您可以通过 $ form ['id']
获取当前gform的ID希望这有助于任何人。