WordPress管理画面でユーザー権限を変更した際に強制ログアウトさせる方法
こんにちは、webエンジニアのゾノ( @ozonosho )です。
今回の記事ではWordPress管理画面でユーザー権限を変更した際に強制ログアウトさせる方法をご紹介いたします。
よくある利用場面としては「卒業したユーザーのアカウント情報だけは残したいケース」や「ログインできないブラックリスト権限を作りたいケース」などでしょうか。
会員制サイトでログインできない権限を用意し、管理者から該当権限を割り当てられたユーザーは強制ログアウトするという運用を想定しています。
管理画面でユーザー権限を変更した際に強制ログアウトさせる方法
まず、指定ユーザーを強制ログアウトさせるだけであれば簡単です。
WordPressの場合、下記1行の処理で実行できます。
delete_user_meta({ユーザーID}, "session_tokens");
WordPressのログイン保持期間はセッション情報に書き込まれていますが、認証用のトークン情報はカスタムフィールド「session_tokens」で管理されています。
そのため、該当のカスタムフィールドを削除することで指定ユーザーをログアウトさせることができます。
あとは、この処理を管理画面でユーザー権限変更時に入れるだけです。
管理画面からユーザー情報を変更した際にはフック「profile_update」を通るので、このフックを利用します。
//管理画面でユーザー権限を変更した際に強制ログアウトさせる
function logout_user($user_id) {
if(is_admin()) {
if(user_can($user_id, '権限')) {
delete_user_meta($user_id, 'session_tokens');
}
}
}
add_action( 'profile_update', 'logout_user' );
これでユーザーを特定の権限に変更した場合のみ強制ログアウトさせることができます。
おわりに
以上、今回の記事でWordPress管理画面でユーザー権限を変更した際に強制ログアウトさせる方法を紹介させていただきました。
当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。