web-dev-qa-db-fra.com

Enregistrement WordPress en plusieurs étapes: en 4 étapes, comment faire?

Lors de l'inscription, j'ai constaté dans plusieurs sites WordPress que le processus d'inscription se déroulait en 3 ou 4 étapes.

comment puis-je mettre en œuvre un tel processus à mon thème? c'est à dire:

  1. choisissez votre rôle + remplissez le formulaire d'inscription ----> si vous êtes d'accord, passez à l'étape 2
  2. détails du profil: image d'utilisateur, certains forme usermeta ---- <si son ok soumettre alors aller à l'étape 3
  3. Prévisualisez le profil avant de confirmer --- <passez à l’étape 4 ou revenez à l’étape 3 pour apporter des modifications.
  4. inscription complète réussie

UPDATE

salut les gars, je l'ai compris un peu, (j'utilise le thème de jobroller qui a un formulaire d'enregistrement en une étape normal, mais il a plusieurs formulaires pour soumettre des offres d'emploi) soumettre le formulaire d'emploi . Ce que je voulais, c’est d’utiliser le même formulaire (formulaire d’emploi à étapes multiples) pour le formulaire d’inscription, afin que les utilisateurs soient obligés de renseigner les détails de leur profil ou autre dans le même processus. enregistrement. donc j'ai piraté l'enregistrement d'origine du thème de jobroller (includes/theme-login.php) et voici ce que cela donne.

theme-login.php

voici les étapes d'enregistrement de fonction qui remplacent l'original jr_register_form()

function jr_registration_steps() {

// Show registration steps forms

### Prevent Caching
nocache_headers();

jr_load_form_scripts();

//global $post, $posted;
global  $posted;
$submitID = $post->ID;

$posted = array();
$errors = new WP_Error();

if (!is_user_logged_in()) :
    $step = 1; 
else :
    $step = 2;
    if (!current_user_can('can_submit_job')) : //can_submit_listing redirect to my listing
        redirect_myjobs();
    endif;
endif;

if (isset($_POST['register']) && $_POST['register']) {

    $result = jr_process_register_form( get_permalink($submitID) );

    $errors = $result['errors'];
    $posted = $result['posted'];

//}
//elseif (isset($_POST['login']) && $_POST['login']) {

    //$errors = jr_process_login_form();

}
elseif (isset($_POST['job_submit']) && $_POST['job_submit']) {  

    $result = jr_process_submit_job_form();//jr_process_submit_user_registration_form

    $errors = $result['errors'];
    $posted = $result['posted'];

    if ($errors && sizeof($errors)>0 && $errors->get_error_code()) $step = 2; else $step = 3;

}
elseif (isset($_POST['preview_submit']) && $_POST['preview_submit']) {

    $step = 4;

    $posted = json_decode($_POST['posted']);

}
elseif (isset($_POST['confirm']) && $_POST['confirm']) {

    $step = 4;

    jr_process_confirm_job_form();//jr_process_confirm_user_registration_form

}
elseif (isset($_POST['goback']) && $_POST['goback']) {
    $posted = json_decode(stripslashes($_POST['posted']), true);
}

if( isset($_GET['checkemail']) && 'newpass' == $_GET['checkemail'] )    
    $message = __('Thank you for registering! An email has been sent to you containing your password.','appthemes');

   get_template_part('header'); ?>

<div class="section">

    <div class="section_content">

        <h1><?php _e('create an Account', 'appthemes'); ?></h1>

        <?php 
            echo '<ol class="steps">';
            for ($i = 1; $i <= 4; $i++) :
                echo '<li class="';
                if ($step==$i) echo 'current ';
                if (($step-1)==$i) echo 'previous ';
                if ($i<$step) echo 'done';
                echo '"><span class="';
                if ($i==1) echo 'first';
                if ($i==4) echo 'last';
                echo '">';
                switch ($i) :
                    case 1 : _e('Create account', 'appthemes'); break;
                    case 2 : _e('Enter Profile Details', 'appthemes'); break;
                    case 3 : _e('Preview/Profile Options', 'appthemes'); break;
                    case 4 : _e('Confirm', 'appthemes'); break;
                endswitch;
                echo '</span></li>';
            endfor;
            echo '</ol><div class="clear"></div>';

            // show the success message usually because a password has been emailed to new user
            if (isset($message) && !empty($message)) echo '<p class="success">'.$message.'</p>';

            jr_show_errors( $errors ); 

            switch ($step) :

                case 1 :
                    jr_before_step_one(); // do_action hook
                    ?>
                    <p><?php _e('You must login or create an account in order to post a job &mdash; this will enable you to view, remove, or relist your listing in the future.', 'appthemes'); ?></p>

                    <div class="col-1">
                        <?php jr_register_form( get_permalink($submitID), 'job_lister' ); ?> <!-- change job_lister to new role--->
                    </div>
                    <div class="col-2">         
                        <?php jr_login_form( get_permalink($submitID), get_permalink($submitID) ); ?>  <!-- delete--->
                    </div>
                    <div class="clear"></div>
                    <?php                       
                    jr_after_step_one(); // do_action hook                      
                    break;
                case 2 :    
                    jr_before_step_two(); // do_action hook
                    jr_submit_job_form(); //*****jr_submit_user_registration_form();                
                    jr_after_step_two(); // do_action hook  
                    break;
                case 3 :    
                    jr_before_step_three(); // do_action hook
                    jr_preview_job_form();  //*****jr_preview_user_registration_form();
                    jr_after_step_three(); // do_action hook
                    break;
                case 4 :
                    jr_before_step_four(); // do_action hook
                    jr_confirm_job_form();  //*****jr_confirm_user_registration_form();
                    jr_after_step_four(); // do_action hook
                    break;

            endswitch;  
        ?>

    </div><!-- end section_content -->

</div><!-- end section -->

<div class="clear"></div>
 <?php if (get_option('jr_show_sidebar')!=='no') get_sidebar('submit'); ?>

 <?php 

   get_template_part('footer');

  }

ici ce que j'ai dans mes includes/forms/register/register-process.php

register-process.php

s'il vous plaît noter que j'ai modifié cela en bas:

// redirect wp_redirect($success_redirect); wp_redirect($success_redirect);// redirect user to dashbord when registred exit();

à ce code:

$redirect_to = !empty( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : '?action=register&step=2';
                            wp_safe_redirect( $redirect_to );

                            exit;

afin d'ajouter &step=2 à l'URL, je pense que vous pouvez ajouter un code similaire à l'autre formulaire pour rediriger et afficher l'étape correcte dans l'URL après? action = register

je n'ai pas encore fini de modifier le code pour l'adapter à mes besoins, mais ce que j'ai suggéré est un début et d'autres peuvent aider à modifier ou à mieux présenter.

j'espère que ça vous aide :)

4
fritids

La méthode la plus simple consiste à utiliser le plug-in Gravity Forms, cela coûte de l'argent, mais cela en vaut la peine, et le retour sur investissement est rapidement rentabilisé.

1
Tom J Nowell