重定向至:登录后引用URL

时间:2016-11-29 作者:Shayne H.

我想要的是在用户登录后将其重定向到引用URL。几天来,我一直在努力解决这个问题,我已经尽可能地阅读了所有内容,但我发现的帖子都有4-5年的历史,或者我尝试的任何帖子代码似乎都不起作用。

我在一个多站点上,希望能应用到所有子站点,但现在,我可以用一些单独修改每个站点的东西来解决问题。

这是我尝试过的最新代码,这是我在某处找到的代码,但这会继续将用户重定向到他们在管理端的配置文件。

function redirect_after_login() {
    $refer=urlencode($_SERVER["REQUEST_URI"]);
    global $redirect_to;
    if (!isset($_GET[\'redirect_to\'])) {
        $redirect_to = $refer;
    }
}
add_action(\'login_form\', \'redirect_after_login\');
如果有人能给我指出正确的方向,那就太好了!

1 个回复
SO网友:TheDeadMedic

您的代码完全有缺陷-更不用说登录后无法重定向到HTTP referer。。。因为referer现在是登录页面。相反,请使用login_redirect 过滤器:

add_filter( \'login_redirect\', function ( $redirect_to, $requested_redirect_to ) {
    if ( ! $requested_redirect_to ) {
        $redirect_to = wp_get_referer();
    }

    return $redirect_to;
}, 10, 2 );
请注意,我们仅覆盖$redirect_to 如果$requested_redirect_to 为“空”,否则:

它会破坏redirect_to WordPress和许多插件都使用URL参数来设置特定的登录后重定向,而不是默认重定向(我见过太多次插件完全破坏了这一功能)。

如果我们总是将其设置为referer,那么最终会出现登录页面本身(如前所述)。这是因为当用户第一次登录页面时,WordPress会设置隐藏redirect_to 值为的字段$redirect_to. 在后续页面加载(即登录)时,这将成为$requested_redirect_to 价值

相关推荐