it-swarm.com.de

Mehrstufige WordPress-Registrierung: in 4 Schritten wie?

Ich habe in mehreren WordPress-Sites bei der Registrierung festgestellt, dass der Registrierungsprozess in drei oder vier Schritten abläuft.

wie kann ich einen solchen Prozess für mein Thema implementieren? dh:

  1. wähle deine Rolle + fülle das Registrierungsformular aus ----> wenn es in Ordnung ist, gehe zu Schritt 2
  2. profildetails: Benutzerfoto, ein paar Usermeta-Formulare ---- <Wenn es in Ordnung ist, senden Sie es ab
  3. Vorschau des Profils vor der Bestätigung --- <Fahren Sie mit Schritt 4 fort oder kehren Sie zu Schritt 3 zurück, um Änderungen vorzunehmen.
  4. registrierung erfolgreich abgeschlossen

UPDATE

hallo Leute, ich habe es ein bisschen herausgefunden (ich verwende ein Jobrollerthema, das ein normales Ein-Schritt-Registrierungsformular hat, aber mehrere Schritt-Formulare zum Einreichen der Jobliste) Jobformular einreichen . Was ich wollte, ist, dasselbe Formular (Formulare mit mehreren Schritten zum Absenden von Aufträgen) für das Registrierungsformular zu verwenden, sodass Benutzer verpflichtet sind, Profildetails oder Ähnliches innerhalb desselben Prozesses auszufüllen. Anmeldung. Also habe ich die ursprüngliche Registrierung des Jobrollerthemas (enthält/theme-login.php) gehackt und hier, was es gibt.

theme-login.php

hier sind die Schritte zur Funktionsregistrierung, die die ursprüngliche jr_register_form() ersetzen.

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');

  }

hier was ich in meiner include/forms/register/register-process.php habe

register-process.php

bitte beachte, dass ich dies unten geändert habe:

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

zu diesem Code:

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

                            exit;

um &step=2 zur URL hinzuzufügen, können Sie, glaube ich, ähnlichen Code zur anderen Form hinzufügen, um den richtigen Schritt in der URL nach? action = register umzuleiten und anzuzeigen

ich habe den Code noch nicht fertig gehackt, um ihn meinen Bedürfnissen anzupassen, aber was ich vorgeschlagen habe, ist ein Anfang, und andere können helfen, ihn zu modifizieren oder besser zu präsentieren.

hoffe es hilft dir :)

4
fritids

Die einfachste Methode hierfür ist die Verwendung des Gravity Forms-Plugins. Es kostet Geld, ist aber die Investition wert und macht sich schnell in der eingesparten Entwicklungszeit bezahlt

1
Tom J Nowell