WordPress製のWebサイトをログインしないと閲覧できないようにする方法

WordPress製のWebサイトをログインしないと閲覧できないようにする方法

WordPressで作ったWebサイトを、ログインしたユーザーのみ閲覧できるように制限をかけたい場合があります。たとえば、構築途中のサイトを特定の人にだけ公開したい場合や、会員制のサイトにしたい場合などです。

そこでここでは、WordPressで作ったWebサイトを、WordPressにログインしたユーザーしか閲覧できないようにする方法を紹介します。

この記事は、以下の環境で実行した結果をもとにしています。WordPressのバージョンなどによっては、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
WordPress4.9.6

ログインしないと閲覧できないようにする

ログインしないとサイトを閲覧できないようにするには、利用しているテーマ(子テーマを利用している場合は子テーマ)の「functions.php」に、以下の内容を追記します。

function my_require_login() {
  global $pagenow;
  if ( ! is_user_logged_in() &&
       $pagenow !== 'wp-login.php' &&
       ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) &&
       ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
      auth_redirect();
  }
}
add_action( 'init', 'my_require_login' );

処理内容は、WordPressにログインしていないと、ログインページにリダイレクトされるように設定しています。

ログインページ以外ヘリダイレクトさせたい場合は「auth_redirect();」の部分を「wp_redirect('URL');」に変更して、URLの部分にリダイレクト先ページのURLを入力します。

あとがき

ここでは、WordPressのテーマファイルをカスタマイズして対応する方法を紹介しましたが、それ以外にも「WP Maintenance Mode」といったWordPressプラグインで対応する方法や、ApacheやNginxといったWordPressを稼働させているWebサーバーソフトウェアで対応する方法もあります。

テーマファイルのカスタマイズが難しい場合は、プラグインやWebサーバーソフト側で対応する方法も検討すると良いでしょう。