Php Wordpress?登录=失败

Php Wordpress?登录=失败,php,wordpress,login,Php,Wordpress,Login,我在wordpress中创建了一个自定义登录页面,并将下面的代码添加到我的模板functions.php,以防止当有人输入错误的密码或空白字段时,自定义登录页面重定向到wp login页面。 问题是,如果有人输入了错误的凭据,然后重新输入了正确的信息,则自定义登录页面仍会在URL末尾保留/?login=failed字符串。 例如,它应该类似于www.something.com/customlogin/ 但它显示www.something.com/customlogin/?login=failed

我在wordpress中创建了一个自定义登录页面,并将下面的代码添加到我的模板
functions.php
,以防止当有人输入错误的密码或空白字段时,自定义登录页面重定向到
wp login
页面。
问题是,如果有人输入了错误的凭据,然后重新输入了正确的信息,则自定义登录页面仍会在URL末尾保留
/?login=failed
字符串。
例如,它应该类似于
www.something.com/customlogin/
但它显示
www.something.com/customlogin/?login=failed
,即使他们已登录。你们能告诉我是否和下面的代码有关吗。谢谢

add_action( 'wp_login_failed', 'custom_login_failed' );
function custom_login_failed( $username )
   {
    $referrer = wp_get_referer();

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



add_filter( 'authenticate', 'custom_authenticate_username_password', 30, 3);
function custom_authenticate_username_password( $user, $username, $password )
{
    if ( is_a($user, 'WP_User') ) { return $user; }

    if ( empty($username) || empty($password) )
    {
        $error = new WP_Error();
        $user  = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));

        return $error;
    }
}
add_操作('wp_login_failed'、'custom_login_failed');
函数自定义\登录\失败($username)
{
$referer=wp_get_referer();
if($referer&&!strstrstr($referer,'wp login')&&!strstrstr($referer,'wp-admin'))
{
wp_重定向(添加查询参数('login','failed',$referer));
出口
}
}
添加过滤器('authenticate'、'custom'u authenticate\u username\u password',30,3);
函数自定义\验证\用户名\密码($user、$username、$password)
{
if(is_a($user,'WP_user')){return$user;}
if(空($username)| |空($password))
{
$error=新的WP_错误();
$user=new WP_错误('authentication_failed','u_('错误:用户名无效或密码不正确');
返回$error;
}
}
使现代化


密码不正确,请重试!如果您忘记了密码,请联系Sunday Capital,我们将手动重置密码。多谢各位


这是我在登录后删除/?login=失败字符串的解决方案。也许有人可以用它

<?php global $user_login;
if(isset($_GET['login']) && $_GET['login'] == 'failed')
    {
        $new_url = esc_url( remove_query_arg( 'login' ) );
            $login = array(
                'remember' => false,    
                'redirect' => $new_url,                         
                'label_username' => '',
                'label_password' => '',
                'id_username'    => 'user_login_failed',
                'id_password'    => 'user_pass_failed'
            );


     } else { 

            $login = array(
                'remember' => false,                                
                'label_username' => '',
                'label_password' => ''
            );
    } ?>
<?php wp_login_form($login); ?>


将登录框(html)模板中的表单操作更改为
/customlogin
。为什么要添加?login=首先失败?如果你不添加它,它将不会被提交。嘿,伙计们,谢谢你们的帮助。我不知道在哪里换。我的表格是这样的。请参阅下一个问题。@DonaldMichaels您可以编辑您的问题,并在原始问题中插入您的表格代码,因为您的表格代码不是答案,所以不应在此处显示为答案。我的错,我不知道,只是更新了它。。。
<?php global $user_login;
if(isset($_GET['login']) && $_GET['login'] == 'failed')
    {
        $new_url = esc_url( remove_query_arg( 'login' ) );
            $login = array(
                'remember' => false,    
                'redirect' => $new_url,                         
                'label_username' => '',
                'label_password' => '',
                'id_username'    => 'user_login_failed',
                'id_password'    => 'user_pass_failed'
            );


     } else { 

            $login = array(
                'remember' => false,                                
                'label_username' => '',
                'label_password' => ''
            );
    } ?>
<?php wp_login_form($login); ?>