【WordPress】サイト全体にログイン認証をかけるプラグイン「Force Login」の使い方

今更ながら会員専用サイトとかを作りたい時に使う、ログイン認証をプラグインで対応しました。

今回の場合、サイトの中に会員向けページ(固定ページと投稿)を作り、その配下に認証をかけたかったのでマルチサイトを利用し、メインサイトと会員向けサイトに分けました。

会員向けサイトに「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 } ?>

まとめ

こんなに簡単に認証サイトが作れる時代…。

何でもできそうな気がしてきました。気がするだけです。

 

コメントを残す

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

CAPTCHA