WordPress redirect to referring page after logging in

I am not using any custom login plugins or any bespoke code. A few of my pages have got this bit of code in them at the very beginning.

<?php
    if(!is_user_logged_in())
        wp_redirect('/login/');
?>

So, this doesn’t allow the users to view the page when not logged in. I have these pages bearing this bit of code:

Read More
/wp-content/my-theme/my-account/
/wp-content/my-theme/my-account/world.php
/wp-content/my-theme/my-account/subscription.php
/wp-content/my-theme/my-dashboard.php
/wp-content/my-theme/my-files.php

Now, when a user goes to any of the above pages, without logging in, it redirects to the login page, and when the user logs in, it lands them to the my-account/ page.

I want to change the current scenario to make the user redirect to the referring page, where he came from. I tried the following things, which never worked.

Using a HTTP_REFERRER

In the login/ form, I placed this bit of code:

<input type="hidden" name="redirect" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />

Hacking functions.php

In the functions.php, I placed this bit of code:

if ( (isset($_GET['action']) && $_GET['action'] != 'logout') || (isset($_POST['login_location']) && !empty($_POST['login_location'])) ) {
        add_filter('login_redirect', 'my_login_redirect', 10, 3);
        function my_login_redirect() {
                $location = $_SERVER['HTTP_REFERER'];
                wp_safe_redirect($location);
                exit();
        }
}

References:


I have also tried these and failed:

Nothing was working out. I am happy to provide further details if needed. Thanks in advance. :)


My work so far…

I have modified the code this way:

<?php
    if(!is_user_logged_in())
        wp_redirect('/login/?redirect_to=' . $_SERVER["REQUEST_URI"]);
?>

This renders the login page this way:

/login.php?redirect_to=/my-account/subscription.php

This would be enough for me to authenticate and redirect. But I need to find the bit where the real redirection happens and I want to redirect it using the redirect_to parameter!

Related posts

Leave a Reply

1 comment

  1. The login process is handled via AJAX. The function posting the values isn’t considering redirect_to . The following code in the JS file always redirects to /my-account. So now when the AJAX function returns, you can get the value of redirect_to hidden field and then redirect the user there.

    window.location = "/my-account/";