基本的には一般公開しているサイトで、一部のコンテンツのみ会員だけに見せたいという場合があると思います。その場合は、以下のようなコードをテンプレートに書くだけで簡単に実装することができます。
ログイン状態ならページを表示し、それ以外はログインフォームへリダイレクトさせる方法
以下のコードを、会員限定にしたいページのテンプレートファイルに記述します。
<?php if(!is_user_logged_in()): // ログインしていない場合は、 auth_redirect(); // ログインフォームへリダイレクト。 ?> <?php else: // ログインしている場合 ?> (ここにページのすべてのソースを記述) <?php endif; ?>
is_user_logged_in()
「is_user_logged_in()」は「WordPressにログインしているかどうか」を判別する関数です。また、その前に「!」(否定)がついているので、「if(!is_user_logged_in())」は「WordPressにログインしていないなら」という条件になります。
auth_redirect()
つぎに「auth_redirect()」ですが「ログイン状態かどうかチェックして、ログインしていなければログインフォームにリダイレクト(転送)させる」という関数です。
この説明だと「if(!is_user_logged_in())」は要らないのではないかと思うかもしれませんが、これがないと(「auth_redirect()」だけだと)、ログイン後に本来見ようとしていたページへ移動ができません。
この処理の使いどころの例
- 新着情報のうち、特定のカテゴリーの場合のみ会員しか閲覧できないようにする
- 特定のカスタム投稿タイプの場合は会員しか閲覧できないようにする
- 特定の固定ページの場合、会員しか閲覧できないようにする
などなど。ちなみに、投稿や固定ページだと記事ごとにパスワードをかけることも可能ですが、ユーザーのログイン状態とは一切関係がありません。
今回ご紹介した方法であれば、WordPressのユーザーとしてログインしているかどうかで判定されることと、カテゴリーまるごとや特定のカスタム投稿タイプの記事すべて、といったように処理ができるので、会員限定サイトを作る際に便利な方法です。