WordPress ログイン後にユーザーまたは権限別にリダイレクト設定をする方法

WordPress ログイン後にユーザーまたは権限別にリダイレクト設定をする方法

WordPress でログイン後にユーザーや権限別にリダイレクト設定をする方法を紹介します。
例えば、クライアントユーザーがログインしたときにダッシュボードから投稿一覧へ遷移させたい場合や、その手のプラグインを使用したくないときに便利な方法です。

  1. ログイン後、ユーザー別にリダイレクトを設定する方法
  2. ログイン後、権限別にリダイレクトを設定する方法
  3. リダイレクト先を管理画面外にする方法

ログイン後、ユーザー別にリダイレクトを設定する方法

ログイン後、ユーザー別にリダイレクトを設定する場合は、条件分岐にユーザー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 を使うことでも実現可能です。