Redirect visitors to new domain, unless logged in. WordPress.

So – here is a very interesting piece of code, that I wanted to share.

One customer came to me with a problem – company decided to move to a new domain and they wanted to redirect everyone, but keep it separately. So – new domain would be on new hosting, totally separate and visitors from old should be redirected to it. But for some reason – they also wanted to have an option to login to the old site. Basically – redirect if not logged in, let login and do not redirect, if logged in.

I have googled a bit and cooked up the following code, that I put into functions.php of the active theme on the old site (remember, we have 2 totally separate WordPress installations here).

add_action( 'init', 'redirect_non_logged_users_to_specific_page' );
function redirect_non_logged_users_to_specific_page() {
  if ( !is_user_logged_in() && $GLOBALS['pagenow'] !== 'wp-login.php' && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {
   wp_redirect( 'https://hlyja.is'.$_SERVER["SCRIPT_URL"] ); 
   exit;
  }
}

And it worked like a charm! 🙂