コンテンツへスキップ

PC問題解決!

  • ホーム

WordPressでアカウントごとに最大同時ログイン数を制限したい

2019年8月23日
投稿者 Taka In Wordpress

WordPressでアカウントごとに最大同時ログイン数を制限したい

【問題】
WordPressでアカウントごとに最大同時ログイン数を制限したい

【解決方法】

function check_current_account_login_session( $user_login ){

	$user = get_user_by( 'login', $user_login );
	$userID = $user->data->ID;
	$manager = '';
	$manager = WP_Session_Tokens::get_instance( $userID );
	$allSession = '';
	$allSession = $manager->get_all();

      // 最大同時ログイン数
	$iAcceptableMaxSession = 3;

      // ログインしようとしているアカウントの現在のログイン数
	$iCurrentUserAllSession = count( $allSession );

	if( $iAcceptableMaxSession < $iCurrentUserAllSession ){

		add_filter( 'authenticate', 'set_authentication_error', 40, 1 );
	}
}

add_action( 'wp_authenticate', 'check_current_account_login_session', 5, 1 );

function set_authentication_error(){
	return new WP_Error( 'over_login_session_limit', '有効同時ログイン数が上限に達しています。' );
}

【備考】
一つのアカウントを複数人で使用されたくない場合、上記のコードをテーマフォルダ内のfunctions.phpにコピーすることで、アカウントの同時ログイン数を制限出来ます。

WordPressのログイン認証時に発動するwp_authenticateフックに、ログインしようとしているユーザーの現在のログインセッション数を取得する処理を追加しています。

もし、最大ログイン数をオーバーしていた場合、authenticateフックにWP_Errorオブジェクトを与えることで、ログインを失敗させています。

投稿者:

Taka

すべての投稿を表示

カテゴリー

  • Linux
  • PHP
  • Thunderbird
  • Wordpress
  • その他
  • ウェブ
  • エクセル
  • ネットワーク

最近の投稿

  • vhをpxに変換する方法(JavaScript / jQuery)
  • elFinderをポップアップして親ウィンドウにパスを返す方法
  • VSCodeにFTPSの設定を行なう方法(エックスサーバー)
  • 空のpタグに高さをつけたい(pタグを入れても改行されない)
  • Chromeのソースコードが文字化けする
  • WordPress(ワードプレス)でマルチサイト化(ネットワーク化)を有効にする方法
  • ファイルサイズが肥大化したExcelを直す方法(Excel for Microsoft 365)
  • Thunderbird(サンダーバード)の軽量化
  • redirect permanentを使って.htaccessに1行でサイト丸ごとリダイレクト
  • MailPoetでカラムを追加すると、ページからはみ出し、コンテンツを追加すると古いテキストが一緒に表示される
  • ダウンロードしてしまった過去のメールから添付ファイルを分離・削除する方法(Thunderbird)
  • IMAP設定したThunderbirdが重たくなったのを軽くする方法(高速化)
  • WordPressでログインを強制的に失敗させ、シェイク(ふるふる)させたい
  • WordPressでアカウントごとに最大同時ログイン数を制限したい
  • Outlookで受信したメールが文字化けする
  • エクセルのフィルタで候補が出ない
  • Windows Update (0x8024401c)でエラーが出る
  • Windows 10 – Windows Updateでエラーが出る
  • 1行で書く.htaccess リダイレクト(転送:redirect)の設定方法 – 正規表現不要
  • ディスクの初期化でMBRとGPTの違いを知りたい

Proudly powered by WordPress | Theme: BusiCare by SpiceThemes