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 check if a user is logged in. If it’s not, it redirects them to the login page. Upon logging in, they will be redirected back 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 adding code snippets to your website, I recommend installing this plugin instead.

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

9 thoughts on “How To Force Users To Login Before Viewing Your WordPress”

  1. Hey, I just added this code. Works really nice, BUT when you click “Lost your password?” on wp-login.php, you can’t get there now unfortunately. Any idea how to solve this?

  2. This works good for internal pages/posts, but not for the home page. How can this same functionally apply to the home page (is_home or is_front_page)?

Leave a Reply