web-dev-qa-db-ja.com

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

ユーザーをリダイレクトしたいのですが、彼のユーザーIDは6です。そのため、このコードをfunctions.phpに追加しました。

if ( is_user_logged_in() ) {
    $user_id = get_current_user_id();
      if ($user_id == 6) {
            /* redirect users to front page after login */
            function redirect_to_front_page() {
                global $redirect_to;
                    if (!isset($_GET['redirect_to'])) {
                    $redirect_to = get_option('siteurl');
                    }
                }
            add_action('login_form', 'redirect_to_front_page');             
      }
    }   

しかし、それでもユーザーはログイン後にrpofileページに行きます。どうやって動かすことができますか?

[更新] それから私はユーザーIDではなくユーザー名に変更しようとしましたが、それでも同じです。彼はログイン後にプロフィールページを取得します。このような:

function redirect_to_front_page() {
    global $redirect_to;
    if ( is_user_logged_in() ) {
        //$user_id = get_current_user_id();
        $current_user = wp_get_current_user();

          //if ($user_id == 6) 
          if ($current_user->user_login = 'hirer') {
            /* redirect users to front page after login */
            if (!isset($_GET['redirect_to'])) {
                $redirect_to = get_option('siteurl');
            }
        }

    }
}
add_action('login_redirect', 'redirect_to_front_page');  

まだ何も変わっていません。ユーザーはログインするとプロフィールページを取得します。

3
Riffaz Starr

login_redirectフィルタ を返す リダイレクト先を使用する必要があります。

add_filter( 'login_redirect', 'redirect_to_home', 10, 3 );
function redirect_to_home( $redirect_to, $request, $user ) {

    if( $user->ID == 6 ) {
        //If user ID is 6, redirect to home
        return get_home_url();
    } else {
        //If user ID is not 6, leave WordPress handle the redirection as usual
        return $redirect_to;
    }

}
7
cybmeta

代わりにlogin_redirectフックを使用してくださいlogin_formそして、あなたはあなたの関数の中で条件を動かすことができます

以下のコードのように。

function redirect_to_front_page() {
    global $redirect_to;
    if ( is_user_logged_in() ) {
        $user_id = get_current_user_id();
          if ($user_id == 6) {
            /* redirect users to front page after login */
            if (!isset($_GET['redirect_to'])) {
                return $redirect_to = get_option('siteurl');
            }
        }

    }
}
add_action('login_redirect', 'redirect_to_front_page' , 10 , 3 );             
1
shyammakwana.me