WordPressはデフォルトだとログイン後にダッシュボードに移動しますが、それをログイン画面のセレクトボックスで選択したページに移動させる方法です。
イメージはここで紹介してるカスタマイズ後のログイン画面で、このようにパスワード入力フィールド下に「ログイン後の移動ページ」としてセレクトボックスを追加されるようになります。
イメージではセレクトボックスの中身が「ダッシュボード」となっていますが、例えばこれを「プロフィール」を選択した状態でログインすると管理画面ログイン後にプロフィールページに移動するという動きになります。
実装にはfunctions.php
に下記のように記述します。
// ログイン画面にセレクトボックスを追加
function add_login_redirect_select_field() {
?>
<p>
<label for="rd">ログイン後の移動ページ</label>
<select id="rd" name="rd" class="input">
<option value="dashboard" selected="selected">ダッシュボード</option>
<option value="postlist">投稿一覧</option>
<option value="profile">プロフィール</option>
<option value="home">TOPページ</option>
</select>
</p>
<?php
}
add_action( 'login_form', 'add_login_redirect_select_field' );
// それぞれどのページに移動するのかを指定
function custom_login_redirect( $redirect_to, $request, $user ) {
if( ! empty( $_POST['rd'] ) ) {
switch ( $_POST['rd'] ) {
case 'dashboard':
$redirect_to = admin_url();
break;
case 'postlist':
$redirect_to = admin_url( '/edit.php' );
break;
case 'profile':
$redirect_to = admin_url( '/profile.php' );
break;
case 'home':
$redirect_to = home_url();
break;
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'custom_login_redirect', 10, 3 );
まずコード上部にある関数でセレクトボックスを表示させます。
label
はセレクトボックス上に記載されている「ログイン後の移動ページ」というテキストになるので、テキストを変更したければこの部分を変更します。
移動させたいページについてはセレクトボックス内のoption
に記述していきます。
基本的に任意で好きな内容にしておけばいいですが、value
に記述したものは後で使用するので、わかりやすいものにしておいた方が良いと思います。
また、HTMLやクラス名などに関しても自由に記述して問題ないのですが、上記のようにp
要素の中にselect.input
とすることで、ログイン画面にデフォルトで表示されている「ユーザー名」と「パスワード」の見栄えと一緒にすることができるので、手っ取り早くスタイル整えたいときは便利です。
既にログイン画面の見栄えを大きく変えているとか組み方を変更しているという場合は、環境にあわせて別途スタイル調整した方が良いかもしれません。
コード下部の関数ではそれぞれセレクトで選んだ項目がどのページに移動するのかを指定していきます。
指定にはまずcase 'xxx':
の部分でxxx
にはソース上部でoption
に記述したvalue
の内容を、その下の$redirect_to = yyy;
にはそのvalue
の場合にどのページに移動するのかをyyy
の箇所に記述します。
最後にbreak;
を記述すれば完了で、case 'xxx':
, $redirect_to = yyy;
, break;
の3つで1セットとなり、それをoption
分記述していく感じになります。
上記を踏まえ、例えばログイン後に「投稿一覧」に移動させたいという時は、まずソース上部で<option value="postlist">投稿一覧</option>
という形で項目を作成し、次にソース下部でcase 'postlist':
と$redirect_to = admin_url( '/edit.php' );
を記述すれば実装をすることができます。
ちなみに、移動ページを選択する必要がない場合は「WordPress:ログイン後にダッシュボードには移動せずに、他ページヘリダイレクトさせる方法」で紹介している内容を実装することで、単純にログインしたらダッシュボード以外の特定ページに移動させることができます。