3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こちらでいかがでしょうか。

    function custom_login_redirect($redirect_to, $request, $user) {
    // 条件に応じてリダイレクト先を変更
    // 例: 管理者の場合、別のURLにリダイレクト
    if (isset($user->roles) && is_array($user->roles)) {
    // 管理者以外は指定のURLへリダイレクト
    if (in_array('administrator', $user->roles)) {
    return admin_url(); // 管理者の場合は管理画面へ
    } else {
    return 'https://example.com/specified-page/'; // その他のユーザーは指定のURLへ
    }
    } else {
    return $redirect_to;
    }
    }
    add_filter('login_redirect', 'custom_login_redirect', 10, 3);

    私のサイトでは問題なく動きました。
    よろしければお試しください。

    トピック投稿者 aya123123

    (@aya123123)

    お返事ありがとうございます。

    試したところ追加したフィルター関数は問題なく通過していることは確認できました。しかしながら通過のタイミングがログイン画面が出た直後でまだログインボタンを押す前のアカウントが確定する前なので場合分けがうまく機能しません。こちらのWordPressではタイミングが異なるようです。
    ちなみにWordPressのバージョンは6.6.1です。

    またご指摘のフィルター関数で以下のようにHTMLコードを書き換えることはできたので
    強制的に全ユーザーに対してURLを指定してみたのですが、やはり/wp-admin/の元のリダイレクト先に飛んでしまいます。この”redirect_to”のパラメータも効いていないようです。

    <input type="hidden" name="redirect_to" value="URL" />

    だとすると、ログインボタンのリンク先wp-login.phpの中で機能するフィルターを指定することになると思うのですが、このあたりのことご教授いただけると幸いです。

    If the host is not allowed, then the redirect defaults to wp-admin on the siteurl instead.

    wp_safe_redirect() – Function | Developer.WordPress.org#Description

    とある通り、無効なリダイレクト先(許可されていないホスト[通常はWordPressがインストールされているホストのみ許可])を指定した場合は管理画面にリダイレクトされるようですので “URL” の部分を確認されてみてはいかがでしょうか?

    許可されていないホストにリダイレクトしたい場合は wp_redirect() 関数がありますが、こちらはリダイレクト先について検証しないので慎重に使用してください。

    また、ログアウトに関しては、wp_logoutフックがありますのでそちらを使用してみてください。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。