web-dev-qa-db-fra.com

Le meilleur moyen de créer un fichier en plusieurs étapes avec un compte utilisateur pour un jour ultérieur?

J'essaie de mettre en place un formulaire en plusieurs parties assez long (~ 50 questions, quelques questions par page) avec une logique conditionnelle. J'aimerais offrir aux visiteurs enregistrés la possibilité de sauvegarder leurs données entre chaque page/étape et de leur donner la possibilité de revenir plus tard pour terminer.

J'ai Gravity Forms et j'ai pensé que cela pourrait fonctionner, mais il semblerait que ce ne soit pas une fonctionnalité qu'ils offrent pour le moment.

Quelqu'un a-t-il des conseils/suggestions sur d'autres plugins ou codes de formulaire susceptibles de répondre à ces exigences? Merci d'avance pour toute votre aide!

4
Michelle

Si vous travaillez sur un thème personnalisé, je pense qu'il est plus facile de le faire avec un modèle de page et la fonction wp_ajax de WordPress.

Le formulaire peut être inclus dans la page en utilisant <?php get_template_part('form','0f-50-question') ?>.

Voici le pseudo code pour le formulaire

<form id="quite-a-long-form" action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" class="form" >
    $step = $_GET['step']
    if $step = 1
        //first section of question
        echo <label>
        echo <input>
        echo <label>
        echo <input>
    else if $step = 2
        //second section of question
        echo <label>
        echo <input>
        echo <label>
        echo <input>
    else if $step = 3
        //third section of question
        echo <label>
        echo <input>
        echo <label>
        echo <input>
    // just repeat for all sections
    endif
    <input type="Submit">
    <?php wp_nonce_field('input-answer','security-code-here'); ?>
    <input name="action" value="input-answer" type="hidden">
</form>

Et pour le php qui traitera le fichier

function process_add_transfer() {
    if ( empty($_POST) || !wp_verify_nonce('security-code-here','add_transfer') ) {
        echo 'You targeted the right function, but sorry, your nonce did not verify.';
        die();
    } else {
        // do your function here 
        wp_redirect($_POST['_wp_http_referer'].'?step='.$index_of_the_next step);
    }
}

J'espère que cette aide

3
ifdion