How To Force Users To Login Before Viewing Your WordPress

Do you want to restrict access on your WordPress website to registered users only? You can easily force users to login before viewing your WordPress website.

We can use the auth_redirect() function to checks if a user is logged in. If it’s not, it redirects them to the login page. Upon logging in, they will be redirected to the page where they originally landed.

To restrict access to your WordPress website, add the following code snippet to your website:

function v_getUrl() {
  $url  = isset( $_SERVER['HTTPS'] ) && 'on' === $_SERVER['HTTPS'] ? 'https' : 'http';
  $url .= '://' . $_SERVER['SERVER_NAME'];
  $url .= in_array( $_SERVER['SERVER_PORT'], array('80', '443') ) ? '' : ':' . $_SERVER['SERVER_PORT'];
  $url .= $_SERVER['REQUEST_URI'];
  return $url;
}
function v_forcelogin() {
  if( !is_user_logged_in() ) {
    $url = v_getUrl();
    $whitelist = apply_filters('v_forcelogin_whitelist', array());
    $redirect_url = apply_filters('v_forcelogin_redirect', $url);
    if( preg_replace('/\?.*/', '', $url) != preg_replace('/\?.*/', '', wp_login_url()) && !in_array($url, $whitelist) ) {
      wp_safe_redirect( wp_login_url( $redirect_url ), 302 ); exit();
    }
  }
}
add_action('init', 'v_forcelogin');

Alternatively, if you are not comfortable with adding code snippets to your website, I recommend installing this plugin instead.

If you found this post useful, share it with your friends: