当自定义登录表单提交时,Wordpress会阻止重定向

时间:2015-05-20 13:09:43

标签: php wordpress redirect login

我在第X页上有一个自定义登录表单,我已使用wp_login_form( $args )添加了表单。

然后我有一个登录按钮wp_loginout();,它将我带到 wp-login.php

我需要登录按钮才能转到 wp-login.php 页面,我需要在提交包含错误或空数据的自定义登录表单时,我需要重定向到同一页面X

目前我已经实现了这段代码

if( ! function_exists( 'custom_login_fail' ) ) {
function custom_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') ) {
        if ( !strstr($referrer,'?login=failed') ) { // make sure we don’t append twice
            wp_redirect( $referrer . '?login=failed' ); // append some information (login=failed) to the URL for the theme to use
        } else {
            wp_redirect( $referrer );
        }
        exit;
    }
}
}

add_action( 'wp_login_failed', 'custom_login_fail' ); // hook failed login
if( ! function_exists( 'custom_login_empty' ) ) {
    function custom_login_empty(){
        $referrer = $_SERVER['HTTP_REFERER'];
        if ( strstr($referrer,get_home_url()) && $user==null ) { // mylogin is the name of the loginpage.
            if ( !strstr($referrer,'?login=empty') ) { // prevent appending twice
                wp_redirect( $referrer . '?login=empty' );
            } else {
                wp_redirect( $referrer );
            }
        }
    }
}
add_action( 'authenticate', 'custom_login_empty');

当提交错误或空白时,页面X上的重定向按预期工作,但是当我单击第X页上的登录按钮时,它不会将我带到 wp-login.php 页面了,但它转到了pageX /?login = empty。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你做不到。在您的页面X上的登录表单的授权请求期间,您的浏览器已被重定向到wp-login.php

我不确定,但您最好使用异步请求(在WP中很难实现)或将用户登录代码复制到您自己的代码(使用站点插件),因此它总是会在任何页面上根据请求授权用户需要。