#本投稿について
Wordpressのセキュリティ対策として有名なのが、ログインページ(/wp-admin)を隠して、総当たり攻撃などによる管理者権限での不正ログインを防ぐことですが、会員制サイトを作成するためにプラグイン『Wp-Members』を使用してログインフォームを設置すると、そこからログインできてしまいます。
そこで、なんとか『Wp-Members』のログインフォームから管理者権限でログインできないようにしたときのメモです。
#先に結論
function.phpに以下のコードを書きました。
function.php
add_filter( 'wpmem_login_redirect', 'my_login_redirect', 10, 2 );
function my_login_redirect( $redirect_to, $user_id ) {
if(user_can( $user_id, 'administrator' )){
wp_logout();
}
return home_url( '/' );
}
#解説
Wp-Membersのフックには、ログイン直後の明示的なフックはありません。(ここで困った)
但し、ログイン後のリダイレクト先を指定するフックとして、ユーザーIDを引数にもつ『wpmem_login_redirect』がありましたので、これを利用できないかと考えました。
この例では、ユーザーIDが管理者権限を持つか、wordpressの標準関数user_canで判定し、そうであるならば、wp_logoutで強制ログアウトさせます。