WordPress:ログインしないとサイトを見れないようにする

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

ここでは、ログインしないとサイトを閲覧できないように、コードの追加で設定する方法を紹介します。

動作環境

この記事は、以下の環境で実行した結果をもとにしています。WordPressやミドルウェアのバージョン、インストールされているWordPressプラグインの状況などにより、動作結果が異なる場合があることをご了承ください。

ソフトウェア バージョン
WordPress 4.9.6
Webサーバー Nginx 1.13.12 
Webアプリケーション PHP 7.2.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」などでも同じことができます。状況に応じてコード追加で対応するか、プラグインを導入して対応するかを決めるのが良いと思います。

スポンサーリンク