プラグインを利用する方法とfunctions.phpに追加する2つの方法がある。
(1)プラグインを利用する方法
- プラグイン「Members Only」をダウンロードし、解凍してpluginにフォルダーごとアップロードする。
- 管理画面のプラグインでMembers Onlyを有効にする。
- 管理画面の設定でMembers Onlyを次のように設定する。
- Members Only?: チェックを入れる
- Redirect To: 「Login Page」にする 未ログインユーザーに対して、アクセス直後に表示する先を指定します。 「Login Page」だとWordPressのログイン画面、「Specific Page」だとLogin Redirectで指定したページへリダイレクトします。
- Return User: チェックを入れる
- Redirection Page: ここの設定でハマって、挫折しそうになりました。
入力欄を空欄にしておくと、ログイン画面へリダイレクトするよ、と書かれてあるようなのですが、なぜかうまくリダイレクトされませんでした。 ドメインの設定やWordPress標準のリダイレクト設定(管理画面→設定→一般)との絡みもあるのかもしれません。
回避策として入力欄に「?」クエスチョンマークを入れると正常に作動しました。 「?」をワイルドカードとして見なしているようです。 もちろん、ある特定のページを設定して飛ばすこともできます。 その際、設定した任意のページは誰でも閲覧できる状態になるようです。 - Login Redirect: 「Front Page」にする ログイン済みユーザーに対して、ログイン後に表示するページを指定します。 Front Pageだといわゆる「Home」、Dashboardはダッシュボードです。 今回の会員制サイトでは、会員登録者が記事を書いたりはしないので、Front Pageへ飛ばしています。
(2)functions.phpに追加する方法 次のコードをfunctions.phpの先頭に入れる。
function require_login() { if ( ! is_user_logged_in() && ! preg_match( '/^(wp-login\.php|async-upload\.php)/', basename( $_SERVER['REQUEST_URI'] ) ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) { auth_redirect(); } } add_action( 'init', 'require_login' );