Создание формы регистрации без плагина
Как можно создать форму регистрации без использования плагина в разработке темы WordPress и как сохранить данные формы в базе данных? Я новичок в разработке тем и не имею представления, как это реализовать. Помогите разобраться! У меня есть простая форма регистрации, но я не знаю, как внедрить её в WordPress без плагина в своей теме. Хочу понять механизм регистрации пользователей в 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="Имя" name='user_name' required="">
<i class="glyphicon glyphicon-user"></i>
</div>
<div class="login-mail">
<input type="text" placeholder="Номер телефона" 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="Пароль" 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>Забыли пароль</label>
</a>
<label class="hvr-skew-backward">
<input type="submit" value="Отправить" name="submit">
</label>
</div>

В вашем PHP-коде используйте функцию wp_create_user()
.
С помощью этой функции вы можете передать username
, email
и `password'.
Затем используйте wp_update_user()
чтобы добавить пользователю остальные данные.
Я бы подключил свою функцию создания пользователя к хуку init
.
Также вам нужно добавить поле nonce в вашу форму, например так, между тегами <form>
:
<?php wp_nonce_field( 'create_user_form_submit', 'djie3duhb3edub3u' ); ?>
Пример:
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')
){
// ничего не делаем
}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 ) {
// добавьте свой код для валидации пароля как вам нужно
$user_id = wp_create_user( $username, $password, $email );
$stuff = array('ID'=>$user_id,'another_user_field'=>'something');
wp_update_user($stuff) // имя, фамилия и т.д.
} else {
return false; // имя пользователя уже существует
}
}
}
