Multi-passos de registro WordPress: em 4 passos como?

4

Eu vi em vários sites do WordPress no registro que o processo de registro está em 3 ou 4 etapas.

como posso implementar esse processo para o meu tema? ou seja:

  1. escolha o seu papel + preencha o formulário de registro ---- > se o seu ok, em seguida, vá para o passo 2
  2. detalhes do perfil: foto do usuário, algum formulário usermeta ---- < se o seu ok, em seguida, vá para o passo 3
  3. Pré-visualizar perfil antes de confirmar --- < vá para o passo 4 ou volte ao passo 3 para fazer alterações.
  4. sucesso completo do registro

UPDATE

  

oi gente eu descobri pouco (eu estou usando o tema jobroller que tem um formulário de registro normal de uma etapa, mas tem várias formas de etapa para submeta a listagem de empregos)    envie o formulário de trabalho .   o que eu queria é usar o mesmo (enviar formulários multi-etapas do trabalho) para o formulário de registro, para que os usuários sejam obrigados a preencher os detalhes do perfil ou o que estiver dentro do mesmo processo. cadastro.   então eu hackeei o registro original do tema jobroller (inclui / theme-login.php) e aqui o que ele dá.

     

theme-login.php

aqui estão as etapas de registro de função que substituem o 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');

  }
  

aqui o que eu tenho em meus includes / forms / register / register-process.php

register-process.php

por favor, note que eu modifiquei isso na parte inferior:

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

  

para este código:

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

                            exit;
  

para adicionar &step=2 à URL, acho que você pode adicionar um código semelhante ao outro formulário para redirecionar e mostrar a etapa correta na URL após? action = register

Eu ainda não terminei de hackear o código para adaptá-lo às minhas necessidades, mas o que eu sugeri é um começo, e outros podem ajudar a modificar ou apresentar melhor.

espero que isso ajude você:)

    
por fritids 14.04.2012 / 21:53

1 resposta

1

O método mais fácil de fazer isso seria usar o plug-in Gravity Forms, custa dinheiro, mas vale a pena o investimento e se paga rapidamente no tempo de desenvolvimento salvo

    
por Tom J Nowell 16.04.2012 / 11:36