将未登录的用户重定向到特定页面,并将他们重定向回原来的位置

时间:2016-01-11 作者:Erdo

问题不是第一次重定向(在其他情况下已经解决),而是第二次重定向返回。

第一次重定向没有问题,当没有登录用户进入ID为10的页面(签出页面)时,他会直接重定向到自定义登录页面,但当他登录时,他不会重定向回签出页面,相反,我们可以在url中看到登录过程之前的内容。com/myaccount/?重定向\\u到=xxx。com/checkout/,他留在账户页面,不会自动返回到结帐页面。

这是我使用的代码:

add_action(\'template_redirect\',\'check_if_logged_in\');
function check_if_logged_in()
{
    $pageid = 10; // checkout page
    if(!is_user_logged_in() && is_page($pageid))
    {
        $url = add_query_arg(
            \'redirect_to\',
            get_permalink($pagid),
            site_url(\'/myaccount/\')
        );
        wp_redirect($url);
        exit;
    }
}
我只需要第二次返回到签出页面的重定向就可以了。这是我们需要的:无登录用户->签出页面->登录页面->登录->签出页面

任何帮助都将不胜感激。谢谢

1 个回复
SO网友:Mike

您需要修改自定义登录页面上的登录表单。使用时wp_login_form() 您可以在参数中包含重定向URL(Codex Entry).

默认URL为:

( is_ssl() ? \'https://\' : \'http://\' ) . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\']

但你可以忽略这一点:

if (get_query_var(\'redirect_to\')) {
    $redirectURL = get_query_var(\'redirect_to\');
    wp_login_form(array(\'redirect\' => $redirectURL));
} else {
    wp_login_form();
}