If user is already logged in, /wp-login.php redirects them back to my home page

I finally fixed an error where only some of my users were getting redirected to their wp-admin area after logging in. Now ALL users are getting redirected to their wp-admin area after logging in.

Now I am having an issue though where if the user goes to wp-login.php while they are already logged in, it automatically redirects them back to my home page instead of their subsite wp-admin area. Can you please help?

Here is the mu-plugin code that I am using to currently redirect users after login. Can you add some code to this so it fixes the issue I listed above?

<?php
/*
Plugin Name: Redirect Users to Primary Site
Plugin URI:
Description: Never see "you do not currently have privileges on this site" when logging in on your multisite ever again!
Version: 2014.06.02
Author: khromov
Author URI: https://profiles.wordpress.org/khromov
License: GPL2
*/

/* https://premium.wpmudev.org/forums/topic/redirect-users-to-their-blogs-homepage */
add_filter('login_redirect', function($redirect_to, $request_redirect_to, $user)
{
if (!is_wp_error($user) && $user->ID != 0)
{
$user_info = get_userdata($user->ID);
if ($user_info->primary_blog)
{
$primary_url = get_blogaddress_by_id($user_info->primary_blog) . 'wp-admin/';
if ($primary_url) {
wp_redirect($primary_url);
die();
}
}
}
return $redirect_to;
}, 100, 3);
?>

  • Ash

    Hello Curran

    Would you please try the following code:

    add_action('init', 'prevent_wp_login');
    
    function prevent_wp_login() {
    
    	if( ! is_user_logged_in() ) return;
    
        global $pagenow;
    
        $action = (isset($_GET['action'])) ? $_GET['action'] : '';
    
        if( $pagenow == 'wp-login.php' && ( ! $action || ( $action && ! in_array($action, array('logout', 'lostpassword', 'rp', 'resetpass'))))) {
    
    		$user_info = get_userdata( get_current_user_id() );
    
    		switch_to_blog( $user_info->primary_blog );
            $page = get_bloginfo('url');
    		restore_current_blog();
    
            wp_redirect($page);
    
            exit();
        }
    }

    You can use this code in your child theme's functions.php if the theme is not changed. Otherwise mu-plugin is the best option. To create a mu-plugin, go to wp-content/mu-plugins folder. If there is no mu-plugins folder then, create one. Now, inside the mu-plugins folder create file with name anything.php (make sure file extension is .php). Now start with a <?php tag and then put the above code.

    Hope it helps! Please feel free to ask more questions if you have any.

    Have a nice day!

    Cheers,
    Ash