我使用以下函数在登录尝试失败后重定向用户。 在函数.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格式不正确。
我的网址: www.site.com/?page_id=57?login=failed
首选网址:www.site.com/?page_id=57&login=failed
现在你会认为我可以把"?"改成"&"。 当我这样做时,如果用户尝试从主页登录并失败,它会产生问题。 它创建一个 404 的 URL:"在此服务器上找不到请求的 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;
}
}
?>