Пользовательский переадресация имени пользователя wp-admin на неправильный пароль

Моя пользовательская форма входа переадресовывает вход в wp-admin, когда пользователю не удается правильно угадать его права. Как мне удастся перенаправить пользователя в текущую форму? И, конечно, показывать правильные ошибки?

Вот код: (то же, что и в руководстве WordPress)

$args = array( 'echo' => true, 'redirect' => site_url( $_SERVER['REQUEST_URI'] ), 'form_id' => 'loginform', 'label_username' => __( 'Username' ), 'label_password' => __( 'Password' ), 'label_remember' => __( 'Remember Me' ), 'label_log_in' => __( 'Log In' ), 'id_username' => 'user_login', 'id_password' => 'user_pass', 'id_remember' => 'rememberme', 'id_submit' => 'wp-submit', 'remember' => true, 'value_username' => NULL, 'value_remember' => false ); wp_login_form( $args ); 

Solutions Collecting From Web of "Пользовательский переадресация имени пользователя wp-admin на неправильный пароль"

При кодировании пользовательской страницы входа необходимо позаботиться об ошибках, иначе WordPress перенаправит страницу на / wp-admin или wp-login.php на неправильные пароли или пустые учетные данные. Для решения этой проблемы выполните следующие действия: –

Пожалуйста, используйте ниже в файле functions.php вашей темы: –

 /** * Function Name: front_end_login_fail. * Description: This redirects the failed login to the custom login page instead of default login page with a modified url **/ add_action( 'wp_login_failed', 'front_end_login_fail' ); function front_end_login_fail( $username ) { // Getting URL of the login page $referrer = $_SERVER['HTTP_REFERER']; // if there's a valid referrer, and it's not the default log-in screen if( !empty( $referrer ) && !strstr( $referrer,'wp-login' ) && !strstr( $referrer,'wp-admin' ) ) { wp_redirect( get_permalink( LOGIN_PAGE_ID ) . "?login=failed" ); exit; } } /** * Function Name: check_username_password. * Description: This redirects to the custom login page if user name or password is empty with a modified url **/ add_action( 'authenticate', 'check_username_password', 1, 3); function check_username_password( $login, $username, $password ) { // Getting URL of the login page $referrer = $_SERVER['HTTP_REFERER']; // if there's a valid referrer, and it's not the default log-in screen if( !empty( $referrer ) && !strstr( $referrer,'wp-login' ) && !strstr( $referrer,'wp-admin' ) ) { if( $username == "" || $password == "" ){ wp_redirect( get_permalink( LOGIN_PAGE_ID ) . "?login=empty" ); exit; } } } // Replace my constant 'LOGIN_PAGE_ID' with your custom login page id. 

и ниже в файле пользовательской учетной записи, чтобы показать соответствующие ошибки: –

 <div class="wp_login_error"> <?php if( isset( $_GET['login'] ) && $_GET['login'] == 'failed' ) { ?> <p>The password you entered is incorrect, Please try again.</p> <?php } else if( isset( $_GET['login'] ) && $_GET['login'] == 'empty' ) { ?> <p>Please enter both username and password.</p> <?php } ?> </div> 

Вы пытались повторить

 site_url($_SERVER['REQUEST_URI'] ); 

этот работает отлично, я использовал его succesfuly

 'redirect' => get_permalink() 

Обновление Для перенаправления при неудаче входа вы должны использовать wp_login_failed hook и некоторый код для перенаправления пользователя на страницу желаний с соответствующим предупреждающим сообщением.

 add_action('wp_login_failed', '_login_failed_redirect'); function _login_failed_redirect( $username ){ //get your page by slug and then its permalink $post = get_page_by_path('slug'); //Or you can get your page ID, if you are assigning a custom template to a page. $redirect_page = !empty ( $post ) ? get_permalink ( $post->ID ) : site_url(); $user = get_user_by('login', $username ); if(!$user){ //Username incorrect wp_redirect($redirect_page .'?login_error=1'); }else{ //Username Password combination incoorect wp_redirect($redirect_page .'?login_error=2'); } } 

И если вы перенаправляетесь на какой-либо шаблон, вы можете легко получить login_error и отобразить его соответствующим образом.