Я использую следующую функцию для перенаправления пользователя после неудачной попытки входа в систему. В functions.php я добавил:
add_action( 'wp_login_failed', 'inline_login_fail' ); function inline_login_fail( $username ) { $referrer = $_SERVER['HTTP_REFERER']; if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) { if ( !strstr($referrer,'?login=failed') ) { // don't append twice wp_redirect( $referrer . '?login=failed' ); } else { wp_redirect( $referrer ); } exit; } }
Это работает, но проблема в том, что я не могу понять, как анализировать «неудачу входа в систему». Когда я спросил это как вопрос PHP, они сказали, что URL-адрес неверен.
Мой URL: www.site.com/?page_id=57?login=failed
Предпочтительный URL: www.site.com/?page_id=57&login=failed
Теперь вы могли бы подумать, что я могу просто изменить «?» на '&'. Когда я это делаю, это создает проблему, если пользователь пытается войти с домашней страницы и терпит неудачу. Он создает URL-адрес, который равен 404: «Запрошенный URL-адрес / wordpress / & login = failed не был найден на этом сервере».
Есть ли способ исправить эту функцию, чтобы она работала с предпочтительным URL? Это значит, что я могу получить значение ошибки входа в систему, например:
<?php if(isset($_GET['login']) === true and $_GET['login'] === 'failed') { get_template_part( 'login', 'failed' ); } else { get_template_part( 'login', 'form' ); } ?>
В противном случае я не могу понять, как работать с этим URL-адресом. Благодаря!
проверить ?
<?php function inline_login_fail( $username ) { $referrer = $_SERVER['HTTP_REFERER']; if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) { if ( !strstr($referrer,'login=failed') ) { // don't append twice if(!strstr($referrer, '?')){ wp_redirect( $referrer . '?login=failed' ); } else { wp_redirect( $referrer . '&login=failed' ); } } else { wp_redirect( $referrer ); } exit; } } ?>