web-dev-qa-db-ja.com

重力フォームはすでにキッキーを使用して記入されている場合ははフォームをスキップしますか?

重力フォームページがあります。フォームに記入した後、確認ページが表示されます。

この設定の問題点は、次のとおりです。誰かがフォームに記入して確認ページに移動し、その後サイトを離れたとしましょう。後で彼らは確認ページから別のファイルをダウンロードする必要があることを覚えています。彼らはサイトに戻ってきて、もう一度フォームに記入しなければなりません。

重力フォームには、Cookieを指定したり、ユーザーが既にフォームに記入したことを示すものや、確認ページに直接移動するためのオプションがありますか

1
Jake Wilson

Gravityフォームのgform_after_submissionフックを利用して送信されたフォームIDに基づいてクッキーを設定し、確認ページでそれをtemplate_redirectにフックして確認する方法についてのコードを次に示します。

機能をカスタマイズするには、 setcookiegform_after_submission 、および template_redirect のドキュメントを調べてください。

フォームの場合

// Make sure to swap out {your_form_id} with the ID of the form.

add_action( 'gform_after_submission_{your_form_id}', 'wpse_set_submitted_cookie', 10, 2 );

function wpse_set_submitted_cookie( $entry, $form ) {

    // Set a third parameter to specify a cookie expiration time, 
    // otherwise it will last until the end of the current session.

    setcookie( 'wpse_form_submitted', 'true' );
}

ページの場合

add_action( 'template_redirect', 'wpse_protect_confirmation_page' );

function wpse_protect_confirmation_page() {
    if( is_page( 'my-confirmation-page' ) && ! isset( $_COOKIE['wpse_form_submitted'] ) ) {
        wp_redirect( home_url( '/my-form/' ) );
        exit();
    }
}
2
brianjohnhanna

これはそれにかなり近いです。

http://gravitywiz.com/submit-gravity-form-access-content/ /

あなたのシナリオに基づいて、あなたの確認内容が静的であると仮定して、あなたはあなたの望む内容でWordPressページをセットアップするでしょう。その後、ユーザーがそのコンテンツにアクセスするためのフォームを送信する必要があるように、スニペットを構成します。それ以降の訪問では、ユーザーがすでに送信している場合は、コンテンツを(フォームなしで)表示するだけです。

1
David