@redesupar

Как вставить wp_error внизу формы?

Сделал кастомную форму, хочу вместо ошибки выводить скрипт, но он выводиться до формы и поэтому не работает

Сам код такой, а мыслей как его перенести нету, менял местами $error

spoiler
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();
}
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы