今更ながら会員専用サイトとかを作りたい時に使う、ログイン認証をプラグインで対応しました。
今回の場合、サイトの中に会員向けページ(固定ページと投稿)を作り、その配下に認証をかけたかったのでマルチサイトを利用し、メインサイトと会員向けサイトに分けました。
会員向けサイトに「Force Login」プラグインを適用しました。
Force Loginの設定
インストールし、有効化します。
はい、それだけです。笑
有効化するだけで、そのサイトはログイン認証がかかります。
ユーザーの設定
わたしは「購読者」ユーザーを作成し、サイトを見るだけのアカウントを作成しました。
また、そのユーザーにはWordPressの管理画面(ダッシュボード)を表示させたくなかったので、以下のように設定をしました。
ツールバーを表示しない
これは、WordPress管理画面のユーザー編集にて「サイトを見るときにツールバーを表示する」のチェックを外すだけです。
管理画面へのアクセスを拒否
下記のコードをfunctions.phpに記載しました。
add_action( 'auth_redirect', 'subscriber_go_to_home' ); function subscriber_go_to_home( $user_id ) { $user = get_userdata( $user_id ); if ( !$user->has_cap( 'edit_posts' ) ) { wp_redirect( get_home_url() ); exit(); } }
ログイン画面もカスタマイズ
ログイン画面のWordPressロゴをサイトロゴに変更、パスワードを忘れた方などのリンクを削除するため、下記のコードをfunctions.phpに記載しました。
function login_logo_image() { echo '<style type="text/css">#login h1 a { background: url(サイトロゴURL) no-repeat;width:300px;height:52px;background-size:100%; }</style>'; } add_action('login_head', 'login_logo_image'); // ロゴのリンク先を指定 function my_login_logo_url() { return 'サイトURL'; } add_filter( 'login_headerurl', 'my_login_logo_url' ); // ロゴのtitleテキストを指定 function my_login_logo_tit() { return 'サイトタイトル'; } add_filter( 'login_headertitle', 'my_login_logo_tit' ); function login_nav_backtoblog_hide() { ?> <style> .login #nav, .login #backtoblog { display: none; } </style> <?php } add_action( 'login_enqueue_scripts', 'login_nav_backtoblog_hide' );
サイト上のログインボタンを状況に合わせて変える
メインサイトに、会員向けページへのログインボタンがあるので、ログインしていない時は「ログイン」ボタンにし、ログインしている時は「ログアウト」ボタンに変更するようにしました。
WordPressの関数で制御できます。
<?php if( is_user_logged_in() ){ ?>logout<?php }else{ ?>login<?php } ?>
まとめ
こんなに簡単に認証サイトが作れる時代…。
何でもできそうな気がしてきました。気がするだけです。