the_tags tag registro personalizados name get_the_tags formularios formulario first crear all php wordpress forms input

php - tag - Formulario de registro de WordPress de dos pasos



the_tags wordpress (7)

intenta esto, es útil para ti https://www.sitepoint.com/building-a-multi-step-registration-form-for-wordpress/

Estoy tratando de lograr lo siguiente y no sé por dónde empezar.

Intento crear un formulario de inscripción / registro con dos pasos.

Primer paso : es tener 2 campos de entrada (Nombre, Correo electrónico) y cuando el usuario envía, se envía un correo electrónico con un enlace al paso dos.

Paso dos : un usuario ingresa el enlace enviado a su correo electrónico, ingresa a una página con un segundo formulario. que tiene un valor del correo electrónico y el nombre que usó, + 2 otros campos (Nombre de usuario, Contraseña) en los que tendrá acceso a ciertas páginas.

No pude encontrar dónde comenzar y ningún complemento cumple con lo siguiente.

Saludos,

Mostafa.


Prefiero usar shortcode. Aquí está el paso. Código completo: Gist

  1. Crea una página (registro). Por ejemplo [request_form action="/thanks"]

Nota: dentro de thanks_func necesita corregir el url $confirmation_body_text = "/signup/?hid=''.$hash.''";

  1. Crea una página de thanks y agrega este código corto:

    [thanks] Thank you page [/thanks]

  2. Crear una nueva tabla en la base de datos de usuario:

    CREATE TABLE wp_new_user ( id int(11) NOT NULL, nombre varchar(40) NOT NULL, email varchar(80) NOT NULL, nombre de usuario varchar(30) DEFAULT NULL, contraseña varchar(30) DEFAULT NULL, hash varchar(40) DEFAULT NULL, created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at timestamp NULL DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

En el primer paso, el correo electrónico se enviará con un enlace como signup?hid=1679091c5a880faf6fb5e6087eb1b2dc

Por lo tanto, en el segundo paso obtendremos un registro de usuario existente de este hash de correo electrónico exclusivo y rellenar previamente los campos de name y email .

  1. En el 2 ° paso, simplemente actualizaremos el registro de usuario existente.

    function request_form_func ($ atts, $ content = null) {extract (shortcode_atts (array (''id'' => false, ''clase'' => falso, ''título'' => falso, ''subtítulo'' => falso, ''acción'' = > "/ thanks", "key" => false, "button_text" => "Submit"), $ atts));

    if( $class ) { $class = '' '' . $class; } else { $class = ''''; } if( empty($_GET) ){ $next_step = false; $db_name = ''''; $db_email = ''''; } if(isset($_GET[''hid''])){ $email_hash = trim($_GET[''hid'']); $table = "wp_new_user"; $project_data = new wpdb(''root'',''root'',''wordpress'',''localhost''); // Testserver $rows = $project_data->get_results( $project_data->prepare( " SELECT id,name, email, hash FROM " . $table . " WHERE hash = %d ", $email_hash ) ); $db_hash = $rows[0]->hash; if( $db_hash == $email_hash ) { $field_id = $rows[0]->id; $db_name = $rows[0]->name; $db_email = $rows[0]->email; $next_step = true; } } $out = ''''; if($id) { $id = ''-''.$id; } $out .= ''<div class="request_form''.$class.''">''; $out .= ''<div class="form-wrap">''; if($title) { $out .= ''<span class="title">'' . $title . ''</span>''; } $out .= ''<form id="step-form" class="cf" method="post" action="''.$action.''">''; $out .= ''<div class="field-wrap"><label for="fullname''.$id.''"><span class="desc">Name</span>''; $out .= ''<input type="text" id="fullname''.$id.''" name="fullname" data-required="true" placeholder="Jon Doe" value="''.$db_name.''"></label></div>''; $out .= ''<div class="field-wrap"><label for="email''.$id.''"><span class="desc">E-Mail</span>''; $out .= ''<input type="email" id="email''.$id.''" name="email" data-required="true" placeholder="[email protected]" value="''.$db_email.''"></label></div>''; if($next_step){ $out .= ''<div class="field-wrap"><label for="username''.$id.''"><span class="desc">Username</span>''; $out .= ''<input type="text" id="username''.$id.''" name="username" data-required="true" placeholder="username"></label></div>''; $out .= ''<div class="field-wrap"><label for="password''.$id.''"><span class="desc">Password</span>''; $out .= ''<input type="password" id="password''.$id.''" name="password" data-required="true" placeholder="password"></label></div>'';

    $ out. = ''''; } $ out. = '''';

    $out .= wp_nonce_field(''step_form'', ''step_form_nonce''.$id, true, false); $out .= ''</form>''; $out .= ''</div>''; $out .= ''</div>''; return $out;

    } add_shortcode (''request_form'', ''request_form_func'');

  2. Luego creo agradecimientos shortcode thanks que cuidarán los datos de tu formulario. Básicamente, en el primer paso debe guardar sus datos. También necesita generar una identificación única para enviar por correo electrónico y guardarla en la base de datos. El enlace se verá como ''signup? Hid = 1679091c5a880faf6fb5e6087eb1b2dc''

    function thanks_func ($ atts, $ content = null) {$ out = '''';

    if(!empty($_POST) || wp_verify_nonce($_POST[''step_form_nonce''],''step_form'')){ } else { $out .= ''<div class="content-area">''; $out .= ''<h2 class="h1 page-title">Something went wrong</h2>''; $out .= ''<p class="block">Please Re-Submit your form again</p>''; $out .= ''</div>''; return $out; } if(isset($_POST[''fullname''])){ $fullname = trim($_POST[''fullname'']); } if(isset($_POST[''email''])){ $email = trim($_POST[''email'']); } if(isset($_POST[''username''])){ $username = trim($_POST[''username'']); } if(isset($_POST[''password''])){ $password = trim($_POST[''password'']); } if(isset($_POST[''hash''])){ $db_hash = trim($_POST[''hash'']); } $hash = md5( rand(0,1000) ); // Generate random 32 character hash and assign it to a local variable. $header .= "MIME-Version: 1.0/n"; $header .= "Content-Type: text/html; charset=utf-8/n"; $header .= "From:" . "[email protected]"; $confirmation_text = "Thanks for Submitting your first form"; $confirmation_body_text = "/registration/?hid=''.$hash.''"; $subject = "Please click the link below"; $message = "Name: $fullname/n"; $message .= "Email Address: $email/n"; $message .= "Click the link: $confirmation_body_text/n"; if (!empty($username) && !empty($password) && !empty($field_id)){ update_custom_user($username, $password, $$db_hash); } else if (create_custom_user($fullname, $email, $hash) && wp_mail($email, $subject, $message, $header)){ } $out .= ''<div class="content-area">''; $content = do_shortcode($content); $out .= $content; $out .= ''</div>''; return $out;

    }

    add_shortcode (''thanks'', ''thanks_func'');

También escribí 2 funciones create_custom_user y update_custom_user que guardarán los datos de datos del primer paso y actualizarán el username y la password en el segundo paso.

function create_custom_user($fullname, $email, $hash){ global $wpdb; $table_name = $wpdb->prefix . "new_user"; $cur_date = new DateTime(); $cur_date->setTimezone(new DateTimeZone(''Europe/Berlin'')); $cur_date = $cur_date->format(''d.m.Y'').'', ''.$cur_date->format(''G:i''); $wpdb->insert( $table_name, array( ''name'' => $fullname, ''email'' => $email, ''hash'' => $hash, ''created_at'' => $cur_date ) ); return true; } function update_custom_user($username, $password, $field_id){ global $wpdb; $table_name = $wpdb->prefix . "new_user"; $cur_date = new DateTime(); $cur_date->setTimezone(new DateTimeZone(''Europe/Berlin'')); $cur_date = $cur_date->format(''d.m.Y'').'', ''.$cur_date->format(''G:i''); $wpdb->update( $table_name, array( ''username'' => $username, ''password'' => $password, ''updated_at'' => $cur_date ), array( "id" => $field_id ) ); return true; }


Creo que por ahora puedes probar este Contact form 7 Multi-Step Form Plugin de Contact form 7 Multi-Step Form aquí:

Formulario de contacto 7 formularios de varios pasos

Pruebe la demostración aquí

Más tarde, puede llegar a saber cómo desarrollar dicho formulario de registro por su talento


Prueba con este complemento para tu propósito.


Aquí hay un breve resumen de los pasos que puede seguir.

Asegúrese de que el usuario sea único y almacene las credenciales para la confirmación.

if(!email_exists( $email )){ /* Store credentials in a custom table with a unique identifier, hashed password and email. Email user with the confirmation link ex. site.com/confirmation/<unique-identifier> */ }

En la página de confirmation crea el usuario simplemente por:

// Confirm <unique-identifier> // Create user $user_id = wp_create_user( $email, $password, $email ); // Set user role $user = new WP_User( $user_id ); $user->set_role( ''contributor'' ); // or a custom role


  1. Pruebe o cree un complemento personalizado y cree 2 códigos cortos.

  2. Crea 2 páginas e inserta los 2 códigos cortos respectivamente.

  3. En el primer código breve, escriba el código de un formulario para permitir que el usuario ingrese su dirección de correo electrónico y su nombre.

  4. Luego ingrese los detalles (nombre y dirección de correo electrónico) en la base de datos con wp_insert_user y luego envíe un correo electrónico a la dirección de correo electrónico generando un enlace a la segunda página y agregando la identificación de usuario encriptada en el enlace.

  5. Cuando el usuario hace clic en el enlace, lo redirige a la segunda página, donde el nombre y la dirección de correo electrónico se rellenarán automáticamente con la consulta de selección.

  6. Inserta todos los detalles restantes en esta página.


PASO 1

Primero debes crear dos plantillas separadas (una para cada paso). En la primera plantilla, debe crear un formulario que envíe el correo electrónico del usuario a la segunda página. El enlace debe tener atributos GET para que pueda obtener su correo electrónico y su primer nombre. Aquí hay un ejemplo (tenga en cuenta que se puede mejorar):

<?php /* ** Template Name: Step 1 */ get_header(); if ( !empty( $_POST[''firstname''] ) && !empty( $_POST[''email''] ) ) { $link = ''http://my-site/step-2''; $link = add_query_arg( array( ''firstname'' => $_POST[''firstname''], ''email'' => $_POST[''email''], ), $link ); $subject = ''New user registration''; $message = ''Please click on the following link to complete your registration: '' . $link; $headers = array(''Content-Type: text/html; charset=UTF-8''); $result = wp_mail( $_POST[''email''], $subject, $message, $headers ); if ( $result ) { $message = ''Please check your email address to complete the registration''; } else { $message = ''Something went wrong. Please contact the administrator''; } echo $message; } else { ?> <form method="POST" action=""> <input type="text" name="firstname" placeholder="First Name"> <input type="email" name="email" placeholder="Email address"> <input type="submit" value="Submit"> </form> <?php } get_footer();

Creamos una verificación simple si el formulario se envía y todos los campos se completan. De ser así, podemos enviar un correo electrónico al paso 2.

PASO 2

Crearemos una plantilla separada donde $_GET los datos de la primera usando $_GET , y agregaremos dos nuevos campos (nombre de usuario y contraseña) que estarán vacíos.

<?php /* ** Template Name: Step 2 */ get_header(); if ( !empty( $_POST[''firstname''] ) && !empty( $_POST[''email''] ) && !empty( $_POST[''password''] ) ) { $user_id = username_exists( $_POST[''username''] ); if ( !$user_id and email_exists($_POST[''email'']) == false ) { $user_id = wp_create_user( $_POST[''username''], $_POST[''password''], $_POST[''email''] ); if ( $user_id ) { update_user_meta($user_id, ''first_name'', $_POST[''firstname'']); $message = ''User has been created''; } } else { $message = ''User already exists!''; } echo $message; } else { ?> <form method="POST" action=""> <input type="text" name="firstname" value="<?php echo ( !empty( $_GET[''firstname''] ) ) ? $_GET[''firstname''] : '''' ; ?>" placeholder="First Name"> <input type="email" name="email" value="<?php echo ( !empty( $_GET[''email''] ) ) ? $_GET[''email''] : '''' ; ?>" placeholder="Email Address"> <input type="text" name="username" placeholder="Username"> <input type="password" name="password" placeholder="Password"> <input type="submit" value="Submit"> </form> <?php } get_footer();

Si se envía el segundo formulario y todo está bien, podemos crear el usuario. Una vez creado podemos actualizar su primer nombre.

Puedes hacer modificaciones ilimitadas en mi código, pero esta es la base. Por ejemplo, podemos hacer los campos requeridos, podemos verificar la fortaleza de la contraseña, la longitud del nombre, etc.