function registration_form( $username, $password, $email, $first_name, $last_name ) {
echo '
<form action="' . $_SERVER['REQUEST_URI'] . '" method="post" class="needs-validation" novalidate>
<div class="form-paper">
<div class="form-title">
<h1>Регистрация</h1>
</div>
<div class="form-group has-validation">
<label for="fname" class="form-label">Имя и фамилия</label>
<input required type="text" class="form-control" id="fname" name="fname" value="' . ( isset( $_POST['fname']) ? $first_name : null ) . '">
<div class="invalid-feedback">
Напишите пожалуйста Имя
</div>
</div>
<div class="form-group has-validation">
<label for="username" class="form-label">Телефон</label>
<input required type="text" name="username" class="form-control" id="username" value="' . ( isset( $_POST['username'] ) ? $username : null ) . '">
<div class="invalid-feedback">
Напишите пожалуйста телефон
</div>
</div>
<div class="form-group has-validation">
<label for="email" class="form-label">Электронная почта</label>
<input required type="email" class="form-control" id="email" name="email" value="' . ( isset( $_POST['email']) ? $email : null ) . '">
<div class="invalid-feedback">
Напишите пожалуйста корректную почту
</div>
<div class="invalid-feedback mail-error-text">
Электронная почта уже занята
</div>
</div>
<div class="form-group">
<label for="password" class="form-label">Пароль</label>
<input required type="password" minlength="5" class="form-control" id="password" name="password" value="' . ( isset( $_POST['password'] ) ? $password : null ) . '">
<div class="invalid-feedback">
Пароль должен состоять минимум из 5 символов.
</div>
</div>
<div class="form-group has-validation">
<label for="lname" class="form-label">Название компании</label>
<input required type="text" class="form-control" id="lname" name="lname" value="' . ( isset( $_POST['lname']) ? $last_name : null ) . '">
<div class="invalid-feedback">
Напишите пожалуйста название компании
</div>
</div>
<input type="submit" name="submit" class="btn btn-primary" value="Зарегистрироваться">
<div class="checker"><span><a href="/login">Войдите</a>, если уже зарегистрированы</span></div>
</div>
</form>';
}
function registration_validation( $username, $password, $email, $first_name, $last_name ) {
global $reg_errors;
$reg_errors = new WP_Error;
if ( email_exists( $email ) ) {
$reg_errors->add( 'email', 'Email уже существует' );
}
if ( is_wp_error( $reg_errors ) ) {
foreach ( $reg_errors->get_error_messages() as $error ) {
echo '<script>
document.getElementById("email").classList.add("test1");
document.querySelector("mail-error-text").classList.add("error-mail-block");</script>';
}
}
}
function complete_registration() {
global $reg_errors, $username, $password, $email, $first_name, $last_name;
if ( 1 > count( $reg_errors->get_error_messages() ) ) {
$userdata = array(
'user_login' => $username,
'user_email' => $email,
'user_pass' => $password,
'first_name' => $first_name,
'last_name' => $last_name,
);
$user = wp_insert_user( $userdata );
}
}
function custom_registration_function() {
if ( isset($_POST['submit'] ) ) {
registration_validation(
$_POST['username'],
$_POST['password'],
$_POST['email'],
$_POST['fname'],
$_POST['lname']
);
// проверка безопасности введенных данных
global $username, $password, $email, $first_name, $last_name;
$value = sanitize_user( $_POST['username'] );
$uesrok = preg_replace('/[^0-9]/', '', $value);
$username = $uesrok;
$password = esc_attr( $_POST['password'] );
$email = sanitize_email( $_POST['email'] );
$first_name = sanitize_text_field( $_POST['fname'] );
$last_name = sanitize_text_field( $_POST['lname'] );
// вызов @function complete_registration, чтобы создать пользователя
// только если не обнаружено WP_error
complete_registration(
$username,
$password,
$email,
$first_name,
$last_name
);
}
registration_form(
$username,
$password,
$email,
$first_name,
$last_name
);
}
// Регистрируем новый шорткод: [cr_custom_registration]
add_shortcode( 'cr_custom_registration', 'custom_registration_shortcode' );
// Обратный вызов функции, которая заменит [book]
function custom_registration_shortcode() {
ob_start();
custom_registration_function();
return ob_get_clean();
}