Intereting Posts
Использование расширенных пользовательских полей с помощью WordPress и Лайтбокс Изменение статуса страницы после события (поиск рекомендаций по лучшей практике) Уведомлять пользователей, когда публикуется новое сообщение, исходя из их предпочтений Индивидуальный многострочный цикл типа по таксономии Как вставить изображение и текст из панели администратора в моей теме Автоматизация постоянных ссылок для каждого создания новой страницы Пользовательский вопрос таблицы базы данных Команды не синхронизированы; вы не можете запустить эту команду сейчас в wordpress, используя PHP 5.4 Пользовательский запрос, проверка значений нескольких мета ключей Различия при использовании функций the_time и the_date Strip <p> из <blockquote> или что-то лучше? Изменение значения параметра экрана по умолчанию для сообщений на странице Тема проверки предупреждает неправильную директиву для темы файл данных шаблона вложения (data.size.url) WordPress не загружает JQuery сейчас? Нужно ли также вставлять в очередь JQuery?

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

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

<!-- 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');