例えば、ワードプレスで会員制サイトを作成しているときに、Adminバーが表示されていると、画面に表示されて邪魔になるだけでなく、ログインページのURLやワードプレスの管理画面へのリンクを開かれてしまい、ワードプレスの管理画面に入ることができてしまいます。
通常は/wp-login.phpまたは/wp-adminでログインページに遷移します。
公開権限が無いユーザーはadminバーを非表示にする
投稿ができないユーザーは「show_admin_bar」をfalseにして非表示にしてしまいます。
add_filter( 'show_admin_bar' , 'hide_admin_bar' );
function hide_admin_bar( $content ) {
return ( current_user_can( 'publish_posts' ) ? $content : false );
}
管理者ログイン
購読者ログイン
Adminバー(管理バー)が消えました!
管理画面からのログインを阻止する
もしログインページを開いてしまった場合は、管理者権限が無ければログインできないように設定ができます。
add_action( 'auth_redirect', 'contributor_redirect' );
function contributor_redirect( $user_id ) {
$user = get_userdata( $user_id );
if ( ! $user->has_cap( 'publish_posts' ) ) {
wp_redirect( home_url() );
echo 'こちらのアカウントではログインできません。';
exit();
}
}
ログインを試みようとすると、警告画面が出るようになりました。
そのまま無視して開こうとすると・・・
トップページにリダイレクトされて、管理画面へ入ることはできないようになります。
まとめ
これで、購読者が管理画面に入ることはできなくなりました。
とはいえ、このままだと購読者ユーザーでも「ログインページ」に入ることは可能です。
例えば、「ログインページ」そのものに入られたくない・・・という場合については、ログインページの前にベーシック認証(手前にポップアップ・IDとパスワードを入力する画面を表示させる)、ログインURLそのものを標準のURLから変更させる・・・などの対策が必要になるかと思います。
ご参考下さい😃