WordPress: add login/logout and register links to the main menu and redirect users after login

WordPress: add login/logout and register links to the main menu and redirect users after login

Two filter functions to add the login/logout and register links to the WordPress main menu and redirect users after login.

I've just finished to make some fixes on a WordPress site which makes use of the Quote Cart plugin. Apparently, one must be a registered user to properly manage orders with this plugin. So they asked me to add a login/logout link, a register link and a user redirect action to the web site. Let's see the code.

To add the login/logout links to the WordPress menu, simply use the following code in your functions.php file:

add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);

function add_login_logout_link($items, $args) {
        
        
        $loginoutlink = wp_loginout('index.php', false);
        $registerlink = wp_register('', '', false);
        $items .= '<li class="menu-item login">'. $loginoutlink .'</li>' . '<li class="menu-item register">' . $registerlink . '</li>';
    	return $items;
}

To redirect a user after being logged in, use the following code:

add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );

function my_login_redirect( $redirect_to, $request, $user ) {
    
    if ( is_array( $user->roles ) ) {
        
        if ( in_array( 'administrator', $user->roles ) ) {
            return home_url( '/wp-admin/' );
        } else {
            return home_url();
        }
            
    }
}

As you can see, I've used two simple filter functions to accomplish these tasks.