Skip to main content

Snippet: Return to current page AFTER login

On the /admin/settings/menu-settings page I wanted to add a login link that auto-redirected user back to "current page" if they were logged out.

1.00

<?php
/*
 * Front-end login helper for WordPress
 *
 * What it does:
 * 1. Watches for visits to /login-return
 * 2. Looks at the page the visitor came from
 * 3. Sends them to wp-login.php with that page added as redirect_to
 * 4. After login, WordPress sends them back to that page
 *
 * Example:
 * /space/say-hello/home
 *   -> click /login-return
 *   -> redirect to /wp-login.php?redirect_to=that-page
 *   -> after login, return to that page
 */

add_action('template_redirect', function () {
    global $wp;

    // Change this if you want a different trigger URL.
    // Example: 'member-login', 'signin', 'go-login'
    $login_return_slug = 'login-return';

    if ( trim($wp->request, '/') !== $login_return_slug ) {
        return;
    }

    // Get the page the visitor came from.
    $referrer = wp_get_referer();

    if (
        $referrer &&
        strpos($referrer, 'wp-login.php') === false &&
        strpos($referrer, 'wp-admin') === false &&
        strpos($referrer, '/' . $login_return_slug) === false
    ) {
        wp_safe_redirect( wp_login_url( $referrer ) );
        exit;
    }

    // Fallback: if no usable referrer exists, send them to normal login
    wp_safe_redirect( wp_login_url( home_url('/') ) );
    exit;

}, 1);