WordPressサイト全体をWordPressにログインしたユーザーだけが閲覧できるようにする方法を紹介します。
WordPressでイントラサイトなど会員制のサイトを構築するのに利用できます。

プラグインによる実装

最も容易な方法がWordPressプラグイン「Force Login」を利用することです。
Force Loginをインストールして有効化すると、未ログイン状態のユーザーからのアクセスがすべてログイン画面に転送されるようになり、ログインしないとコンテンツを閲覧できなくなります。

インストール方法

WPの管理画面の「プラグイン」>「新規追加」にアクセスし、キーワード検索で「Force Login」を検索します。
下記の一番最初に表示されているプラグインの「今すぐインストール」をクリックしてインストールし、インストールが完了したら「有効化」をクリックして、プラグインを有効化します。

使用方法

Force Loginに特に設定事項はありません。有効化した段階で、未ログインユーザーは強制的にログイン画面に転送されるようになります。

なお、直接プラグインファイルを入手したい場合は下記のリンクから取得してください。

テーマを編集して実装する方法

プラグインをなるべく導入したくない場合は、自力でテーマ内のテンプレートファイルを編集して実装することも可能です。
この方法は主に2つの実装方法があります。

header.phpを編集する方法

ひとつはテーマで共通で読み込んでいるheader.phpの一番最初に、リダイレクトの処理を追加する方法です。
header.phpの一番上に下記の記述を追加します。

  if ( ! is_user_logged_in()){
    wp_redirect(wp_login_url());
  }

「is_user_logged_in()」はアクセスしているユーザーのWordPressへのログイン状態は判定する関数です。
上記では、アクセスしたユーザーがWordPressにログインしていないとログイン画面にリダイレクトします。
この方法は全てでheader.phpを読み込んでいることが前提になりますので、コンテンツによってheader-hoge.phpのようなことなるヘッダーファイルを読み込んでいる場合は、それぞれに記述する必要があります。

functions.phpを編集する方法

もうひとつはテーマ内のfunctions.phpを編集する方法です。
functions.phpに下記の通り記述します。

function require_login() {
    if ( ! is_user_logged_in()) {
        wp_redirect(wp_login_url());
    }
}
add_action( 'template_redirect', 'require_login' );

「template_redirect」は「init」と「wp_head」の間で実行されるアクションフックで、ページを表示する直前で実行されます。

ページを実行する直前でWPへのログイン状態を判定し、WPにログインしていなければログイン画面に転送するという仕組みです。

functions.phpはテーマに必須のファイルで、且つ記述した内容は条件を設定しない限りは必ず実行されるので、テーマ内のすべてのページで実行されます。

ぜひ参考にしてみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です




アーカイブ

カテゴリ