Registro de WordPress en varios pasos: en 4 pasos, ¿cómo?

4

Vi en varios sitios de WordPress en el registro que el proceso de registro se realiza en 3 o 4 pasos.

¿Cómo puedo implementar dicho proceso en mi tema? es decir:

  1. elija su rol + complete el formulario de registro ---- > si está bien enviarlo, vaya al paso 2
  2. detalles del perfil: foto del usuario, alguna forma de usuario ---- < si está bien, envía el paso 3
  3. Vista previa del perfil antes de confirmar --- < vaya al paso 4 o vuelva al paso 3 para realizar cambios.
  4. éxito de registro completo

UPDATE

  

hola chicos, lo he descubierto un poco (estoy usando el tema jobroller que tiene un formulario de registro de un paso normal, pero tiene formularios de varios pasos para enviar la lista de trabajos)    enviar formulario de trabajo .   Lo que quería era usar el mismo (enviar formularios de pasos múltiples de trabajo) para el formulario de registro para que los usuarios estén obligados a completar los detalles del perfil o lo que sea dentro del mismo proceso. registro.   Así que pirateé el registro original del tema jobroller (incluye / theme-login.php) y aquí lo que da.

     

theme-login.php

aquí están los pasos de registro de la función que reemplazan el jr_register_form() original

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

  }
  

aquí, lo que tengo en mi incluye / forms / register / register-process.php

register-process.php

tenga en cuenta que he modificado esto en la parte inferior:

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

  

a este código:

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

                            exit;
  

para agregar &step=2 a la url, creo que puedes agregar un código similar a la otra forma para redirigir y mostrar el paso correcto en url después de? action = register

No terminé de piratear el código para adaptarlo a mis necesidades, pero lo que sugerí es un comienzo y otros pueden ayudar a modificarlo o presentarlo mejor.

espero que te ayude :)

    
pregunta fritids 14.04.2012 - 21:53

1 respuesta

1

El método más sencillo para hacer esto sería utilizar el complemento Gravity Forms, cuesta dinero, pero vale la pena la inversión y se amortiza rápidamente en el tiempo de desarrollo guardado

    
respondido por el Tom J Nowell 16.04.2012 - 11:36

Lea otras preguntas en las etiquetas