Wordpress全局重定向登录到上一页

时间:2018-02-08 04:24:50

标签: php ajax wordpress redirect

我使用Wordpress作为一个需要所有用户登录才能访问的应用程序。我一直用来执行此操作的功能

function logoutApp_redirect() {
global $post;
    if( ! is_user_logged_in() ){
        wp_redirect( home_url() . '/dashboard' );
    }
}
add_action( 'template_redirect', 'logoutApp_redirect' );

if用户已注销,然后我想将其返回到之前所在的页面。例如,如果某个用户在home_url() . '/page1' );上,并且他们已注销不活动,则会在登录后将其返回此页面。

我的一些想法是首先使用 AJAX 并覆盖登录(因此他们永远不会离开他们所在的页面)并在登录时删除叠加层。这是我的终极解决方案,但为了安全起见,任何具有 inspect 知识的人都可以隐藏叠加层以查看隐私信息。

因此,将重定向添加到wp-login并将我的第二个想法添加到用户注销时的原因将被重定向,并且在登录时它们将返回到上一页。这是更好的安全方法,但这意味着任何未存储到 DB 的信息都将丢失。

如何解决解决这些问题的解决方案?

请注意我不希望将插件作为解决方案,并且希望在我的functions.php

中保持正常运行

1 个答案:

答案 0 :(得分:0)

您可以使用PHP $_SESSION

if( ! is_user_logged_in() ){
    $_SESSION['user_previous_page'] = $server['REQUEST_URI'];
    wp_redirect( home_url() . '/dashboard' );
}

然后在登录后,您可以将用户发送到上一页

 wp_redirect(home_url() . $_SESSION['user_previous_page']);