Crear formulario de registro sin plugin en WordPress
¿Cómo podemos crear un formulario de registro sin usar un plugin en el desarrollo de temas de WordPress y cómo se pueden guardar los datos del formulario en la base de datos? Como soy nuevo en el desarrollo de temas, no tengo idea... ¡ayúdame! Tengo este simple formulario de registro y no sé cómo implementarlo en WordPress sin usar un plugin en mi tema. Quiero saber cómo funciona el mecanismo de registro de usuarios en WordPress.
<div class="col-md-6 login-do">
<input type="hidden" name="action" value="add_foobar">
<input type="hidden" name="data" value="foobarid">
<div class="login-mail">
<input type="text" placeholder="Nombre" name='user_name' required="">
<i class="glyphicon glyphicon-user"></i>
</div>
<div class="login-mail">
<input type="text" placeholder="Número de teléfono" name='user_number' required="">
<i class="glyphicon glyphicon-phone"></i>
</div>
<div class="login-mail">
<input type="text" placeholder="Email" name='user_email' required="">
<i class="glyphicon glyphicon-envelope"></i>
</div>
<div class="login-mail">
<input type="password" placeholder="Contraseña" name='user_password' required="">
<i class="glyphicon glyphicon-lock"></i>
</div>
<a class="news-letter " href="#">
<label class="checkbox1"><input type="checkbox" name="checkbox" ><i> </i>Olvidé mi contraseña</label>
</a>
<label class="hvr-skew-backward">
<input type="submit" value="Enviar" name="submit">
</label>
</div>

En tu PHP, usa wp_create_user()
.
Con esta función, puedes pasar username
, email
y `password'.
Luego, wp_update_user()
para asignar al usuario el resto de información.
Yo engancharía mi función de creación de usuarios al hook init
.
Además, querrás añadir un campo nonce en tu formulario, por ejemplo esto, entre las etiquetas <form>
:
<?php wp_nonce_field( 'create_user_form_submit', 'djie3duhb3edub3u' ); ?>
Ejemplo:
add_action('init', 'my_theme_create_new_user');
function my_theme_create_new_user(){
if (
! isset( $_POST['djie3duhb3edub3u'] )
|| ! wp_verify_nonce( $_POST['djie3duhb3edub3u'], 'create_user_form_submit')
){
// no hacer nada
}else{
$username = sanitize_text_field($_POST['user_name']);
$email = sanitize_text_field($_POST['user_email']);
$password = $_POST['user_password'];
$user_id = username_exists( $username );
if ( !$user_id and email_exists($email) === false ) {
// aquí puedes añadir código para validar la contraseña como prefieras
$user_id = wp_create_user( $username, $password, $email );
$stuff = array('ID'=>$user_id,'another_user_field'=>'something');
wp_update_user($stuff) // nombre, apellido, etc.
} else {
return false; // el nombre de usuario ya existe
}
}
}
