サイトの来訪者を一般と登録ユーザーに分けて、コンテンツを見せる方法です。
そんなとき WordPress では、権限をユーザーごとに設定すれば、ユーザーがログインしているときだけコンテンツを表示させることが出来ます。
サイドバーに設置
サイドバーにユーザー名、パスワード、ログインボタンを配置する。
フォームのデータ送信先は、
<?php echo wp_login_url() ?>
で取得できます。
またログイン直後に管理画面へ遷移しないようにするには、「redirect_to」というパラメータを加えると実現できます。
ログインしたときと同じページに表示させるにはこのように書きます。
<?php echo wp_login_url() ?>?redirect_to=<?php echo esc_attr($_SERVER[‘REQUEST_URI’]) ?>
ユーザー名とパスワードの入力要素に与える「name」属性はそれぞれ、「log」と「pwd」を指定します。
<?php global $current_user; echo $current_user->display_name ?> ログアウトについてはこのように記述します。
<a href="<?php echo wp_logout_url() ?>&redirect_to=<?php echo esc_attr($_SERVER['REQUEST_URI']) ?>">こちら</a>
<h2>ログインフォーム</h2> <?php if (is_user_logged_in()) : ?> Welcome! <?php global $current_user; echo $current_user->display_name ?>さん<br /> ログアウトは » <a href="<?php echo wp_logout_url() ?>&redirect_to=<?php echo esc_attr($_SERVER['REQUEST_URI']) ?>">こちら</a> <?php else : ?> <form method="post" action="<?php echo wp_login_url() ?>?redirect_to=<?php echo esc_attr($_SERVER['REQUEST_URI']) ?>"> <p><label for="login_username">ユーザー名:</label><br /> <input type="text" name="log" id="login_username" value="" /></p> <p><label for="login_password">パスワード:</label><br /> <input type="password" name="pwd" id="login_password" value="" /></p> <p><input type="submit" value="ログイン" /></p> </form> <?php endif; ?>
WordPress では、ログイン後管理画面が表示できるようになってますが、禁止するように設定します。
フックを利用すれば表示できないようにできます。
管理画面を表示する時に呼び出されるアクションフックがあるりますので、そこにトップページなどへ強制的にリダイレクトさせるようにします。
「functions.php」の一番下に下記を記述します。
function mts_check_login() { global $current_user; get_currentuserinfo(); extract($current_user->wp_capabilities); if ($subscriber) { wp_redirect(get_bloginfo('url')); } } add_action('admin_init', 'mts_check_login');