保留表格的重力形式确认

时间:2015-04-02 06:30:46

标签: wordpress gravity-forms-plugin

在重力形式确认期间(在表格成功填写并且用户提交表格之后)而不是仅显示确认文本时,我还想在确认文本下方显示确认文本和表格本身。

我不能在gform的确认设置上使用重定向来页面url或页面选项,因为用户通过短代码在各种页面上使用表单(某些em甚至通过do_shortcode进行硬编码),并且他计划增加更多。

这个想法是,在用户填写并提交表单后(无论表格驻留在哪个页面),表单数据将被提交,页面重新加载,显示确认消息并显示实际表单(当然所有数据都消失了,新鲜的状态)

提前致谢

2 个答案:

答案 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的页面上进行了测试。

如果你有一个包含多个gfo​​rms的页面,那么很简单,只需将有问题的gform的id添加到queryString即可。然后,更容易提取查询字符串并识别确认消息所属的格式。

您可以通过 $ form ['id']

获取当前gform的ID

希望这有助于任何人。