Intereting Posts
Получить категории третьего уровня WooCommerce Поиск пользователей с настраиваемыми метаданными Перенаправление на странице администратора Имея add_action ('user_new_form',) Отчеты администратора WooCommerce: получение пользовательского отчета о продукте на основе диапазона дат Почему абзацы не нарушаются на этой странице? Лучшая эффективность работы почты? Ошибка при установке темы – «не удалось открыть поток: нет такого файла или каталога в …» добавить изображение в раскрывающемся меню выберите Таможенный шаблон пользовательского почтового типа Как показать изображение Мета под КАЖДОЙ картиной в КАЖДОЙ почте Работа над исправлением wp-front-end-редактора, столкнувшись с неопределенным индексом Устранение слишком большого количества перенаправлений на wordpress Добавить пользовательский фон в раздел на главной странице Попытка исключить липкие сообщения из date_query

Как создать пользовательскую форму входа / регистрации с обработкой ошибок?

Итак, я работаю над плагином, в котором я создаю пользовательскую страницу, содержащую форму для входа, а также одну для регистрации пользователя; У меня есть формы, созданные и действующие, ниже мой код.

<!-- Begin login form --> <form name="loginform" id="login_form" class="login_form" action="<?php echo esc_url( wp_login_url() ); ?>" method="post"> <p> <input type="text" name="log" id="user_login" class="input" placeholder="Username" /> </p> <p> <input type="password" name="pwd" id="user_pass" class="input" placeholder="Password" /> </p> <button name="wp-submit" id="wp-submit" class="btn"><?php _e("Sign in", "shorti"); ?></button> <input type="hidden" name="redirect_to" value="<?php echo $_SERVER["REQUEST_URI"]; ?>" /> </form> <!-- end login form --> <!-- Begin registration form --> <form method="post" id="register_form" class="wp-user-form" action="<?php echo site_url('wp-login.php?action=register', 'login_post') ?>"> <p><!-- Username --> <input type="text" name="user_login" id="user_login" class="input" placeholder="username" /> </p> <p><!-- Email to send p/w to --> <input type="email" name="user_email" id="user_email" class="input" placeholder="email address" /> </p> <p class="small-text">You will receive an email with a generated password<br />(which you can change in your "user settings")</p> <?php do_action('register_form'); ?> <button name="wp-submit" id="wp-submit" class="btn"><?php _e("Register!", "shorti"); ?></button> <?php $register = $_GET['register']; if($register == true) { echo '<p>Check your email for the password!</p>'; } ?> <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>?register=true" /> <input type="hidden" name="user-cookie" value="1" /> </form><!-- end registration-form --> 

Это прекрасно работает и в том, что всякий раз, когда появляется сообщение об ошибке, он перенаправляет пользователя на wp-login.php. Мне нужна страница с формой для обработки всех ошибок с помощью AJAX; чтобы обеспечить лучший пользовательский интерфейс. Каков наилучший способ сделать это?

Посмотрите на элемент формы открытия. Значение для действия определяет, где будут отправляться данные формы. Изменяя значение, вы можете просто передать форму для перенаправления на себя, а не на другую страницу.

Кодекс предлагает альтернативный подход к созданию надбавки для необходимой формы:

http://codex.wordpress.org/Customizing_the_Login_Form#Make_a_Custom_Login_Page

Вот более углубленное руководство:

http://digwp.com/2010/12/login-register-password-code/

Вы всегда можете просто использовать или развить уже существующий популярный плагин на основе Ajax:

http://wordpress.org/plugins/login-with-ajax/

Вот что я делаю. Использовать регистрационную форму для создания входа в систему https://codex.wordpress.org/Function_Reference/wp_login_form

Ниже перечислены переадресации входа в систему и обработка ошибок входа. Это поможет вам с проблемой входа.

 /** Login Redirect * Redirect user after successful login. * * @param string $redirect_to URL to redirect to. * @param string $request URL the user is coming from. * @param object $user Logged user's data. * @return string */ function my_login_redirect( $redirect_to, $request, $user ) { //is there a user to check? global $user; if ( isset( $user->roles ) && is_array( $user->roles ) ) { //check for admins if ( in_array( 'administrator', $user->roles ) ) { // redirect them to the default place return home_url('/wp-admin/'); } else { return home_url(); } } else { return $redirect_to; } } /*Login Error Handle*/ add_action( 'wp_login_failed', 'aa_login_failed' ); // hook failed login function aa_login_failed( $user ) { // check what page the login attempt is coming from $referrer = $_SERVER['HTTP_REFERER']; // check that were not on the default login page if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') && $user!=null ) { // make sure we don't already have a failed login attempt if ( !strstr($referrer, '?login=failed' )) { // Redirect to the login page and append a querystring of login failed wp_redirect( $referrer . '?login=failed'); } else { wp_redirect( $referrer ); } exit; } } /*Login Empty Fields Error handling*/ add_action( 'authenticate', 'pu_blank_login'); function pu_blank_login( $user ){ // check what page the login attempt is coming from $referrer = $_SERVER['HTTP_REFERER']; $error = false; if($_POST['log'] == '' || $_POST['pwd'] == '') { $error = true; } // check that were not on the default login page if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') && $error ) { // make sure we don't already have a failed login attempt if ( !strstr($referrer, '?login=failed') ) { // Redirect to the login page and append a querystring of login failed wp_redirect( $referrer . '?login=failed' ); } else { wp_redirect( $referrer ); } exit; } } /*Logout Redirect*/ add_filter( 'login_redirect', 'my_login_redirect', 10, 3 ); function go_home(){ wp_redirect( home_url('/login/') ); exit(); } add_action('wp_logout','go_home');