WordPress ログイン後にユーザーまたは権限別にリダイレクト設定をする方法
最終更新日 - 公開日 2016.12.04
by
WordPress でログイン後にユーザーや権限別にリダイレクト設定をする方法を紹介します。
例えば、クライアントユーザーがログインしたときにダッシュボードから投稿一覧へ遷移させたい場合や、その手のプラグインを使用したくないときに便利な方法です。
ログイン後、ユーザー別にリダイレクトを設定する方法
ログイン後、ユーザー別にリダイレクトを設定する場合は、条件分岐にユーザーIDを指定します。
ユーザーIDの確認する方法は、ユーザー一覧から確認したいユーザーの詳細ページを選択したときに、表示されるURLにユーザーIDとして表示されます。
例えば、ユーザーIDが2のユーザーの場合、次のコードを functions.php に追加します。
/* 【管理画面】ログイン後にユーザー別にリダイレクトを設定 */
add_action('wp_login', 'redirect_roll', 10, 2);
function redirect_roll($user_login, $user){
if( $user->ID == 2 ){ // ユーザーIDを指定
wp_redirect( '/wp-admin/admin.php' ); // リダイレクトさせたいURLを指定
exit();
}
}
管理者ユーザー(デフォルトのIDは1)以外をまとめてリダイレクト設定したい場合は、if文の比較演算子を ==
(等しい)から !=
(等しくない)に変更して対応します。
if( $user->ID != 1 ){ // ユーザーID 1 以外を指定
ログイン後、権限別にリダイレクトを設定する方法
ログイン後、権限別にリダイレクトを設定する場合は、権限のスラッグを指定して対応します。
権限のスラッグはコード下のスラッグ一覧を参照してください。
次のコードを functions.php に追加します。
/* 【管理画面】ログイン後に権限別にリダイレクトを設定 */
add_action('wp_login', 'redirect_roll', 10, 2);
function redirect_roll($user_login, $user){
if( $user->roles[0] == ' editor' ){ // 編集者権限を指定
wp_redirect( '/wp-admin/admin.php' ); // リダイレクトさせたいURLを指定
exit();
}
}
- 管理者
slug : administrator - シングルサイト内のすべての管理機能にアクセスできるユーザー
- 編集者
slug : editor - 他のユーザーの投稿を含むすべての投稿を発行、管理できるユーザー
- 投稿者
slug : author - 自身の投稿を発行、管理できるユーザー
- 寄稿者
slug : contributor - 自身の投稿を編集、管理できるが、発行はできないユーザー
- 購読者
slug : subscriber - プロファイル管理のみを実行できるユーザー
指定した権限以外を対象にする場合はif文の比較演算子を変更して対応します。
次のコードは、管理者権限以外を対象にした場合です。
if( $user->roles[0] != 'administrator' ){ // 管理者権限以外を対象
リダイレクト先を管理画面外にする方法
リダイレクト先をサイトURLにしたい場合はテンプレートタグ home_url
を使用します。
wp_redirect( home_url() ); // ホームURLを指定
まとめ
WordPress でログイン後にユーザーや権限別にリダイレクト設定をする方法を紹介しました。
今紹介したことの一部は、WordPress プラグイン Peter’s Login Redirect を使うことでも実現可能です。