Как сделать свой редирект после ошибки введения логина в wp?

Рейтинг: 0Ответов: 1Опубликовано: 17.04.2023

Сделал свою страницу логина /login/ с помощью wp_login_form(); При успешной авторизации введет на страницу куда надо, а если не успешная то ведет на wp-login.php, Как надо сделать так чтобы бы при неуспешной оставалась на той же странице? Делаю так

add_action( 'wp_login_failed', 'my_front_end_login_fail' );  // hook failed login

function my_front_end_login_fail( $username ) {
   $referrer = $_SERVER['HTTP_REFERER'];  // where did the post submission come from?
   // 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( $referrer . '?login=failed' );  // let's append some information (login=failed) to the URL for the theme to use
      exit;
   }
}

Вроде работает, если вводить неправильный логин и пароль. А если не вводить ничего или же ввести только логин или только пароль то ведет на wp-login.php

Ответы

▲ 0Принят

Попробуйте добавить еще одну проверку

...    
if (!empty($referrer) && !strstr($referrer, 'wp-login') && !strstr($referrer, 'wp-admin')) {
    if (!strstr($referrer, '&login=failed')) {
        wp_redirect($referrer.'&login=failed'); 
    } else {
        wp_redirect($referrer); 
    }
    exit;
}
...