ユーザーログイン時に、リダイレクトURLを簡単に変更できます( this 、 this 、または this を参照)が、ユーザーが/wp-login.php
にアクセスすると、ダッシュボードにリダイレクトされますすでにログインしている場合。
私の質問は、ユーザーが/wp-login.php
andにアクセスして既にログインしているときに、それらをカスタムURLにリダイレクトする方法を教えてください。
このような問題で何が起きているのかを理解するための最善の方法は、情報源に行くことです。文字通り。
wp-login.php
を調べて、HTMLレンダリングが行われる前に発生するアクションを探してください。あなたが探しているフックは login_init
です。それにコールバックを追加し、ユーザがログインしているかどうかを確認し、そうであればそれらをリダイレクトします。
ここでの他の唯一の障害は、wp-login.php
がログアウトも処理することです。そのため、ログアウトが進行中でないことを確認するために global $action
変数をチェックする必要があります。
add_action('login_init', 'wpse187831_redir_loggedin');
function wpse187831_redir_loggedin()
{
global $action;
if ('logout' === $action || !is_user_logged_in()) {
return;
}
wp_redirect(apply_filters(
'wpse187831_loggedin_redirect',
current_user_can('read') ? admin_url() : home_url(),
wp_get_current_user()
), 302);
exit;
}
ちょっと余分なものがそこにあります:
apply_filters
を呼び出すことで、他のプラグインがフックして私のリダイレクトを変更できるようになります。このフィルタは、現在のユーザーと同様にリダイレクト自体を取得します。これがその小さなスニペットです/ プラグインとして 。
現在のページがログインしているかどうか、グローバル変数$pagenow
とカスタムURLへのwp_redirect()
を条件is_user_logged_in
内で使用することで確認できます。
function redirect_logged_in_user()
{
if( is_user_logged_in ) {
wp_redirect('http://customurl');
}
}
global $pagenow;
if( $pagenow == 'wp-login.php')
redirect_logged_in_user();