サポート » 使い方全般 » ユーザーログイン後のリダイレクト

  • 解決済 hideki18

    (@hideki18)


    WordPress初心者です。
    はじめて投稿します。よろしくお願いします。

    今、Wordpress2.6をカスタマイズして、
    ユーザー参加型の画像投稿サイトを作成しています。
    それで、ユーザー専用の管理画面を作成したので、
    user_levelが10以外の人はログインしたときに
    通常の管理画面ではなく私が作った画面
    (例として http://domain/wordpress/?page_id=10)
    にリダイレクトしたいと思っています。
    しかし、私のやり方では、なぜか
    http://domain/?page_id=10
    に飛んでしまいます。

    一体どこを調べたらいいか分からなくなってしまったので
    なんとかお知恵をお借りできたら思い投稿させていただきました。

    私がやったのは、
    /wp-login.php
    の中の
    case ‘login’;
    の中にある$redirect_toを変更しました。
    $redirect_toの中身は確かに合っていました。

    しかし、ここでとても不思議なことがありました。
    $redirect_to = ‘http://yahoo.co.jp’;
    echo $redirect_to;
    exit;
    とすると、
    なんと
    http://domain/wordpresshttp://yahoo.co.jp
    と表示されるのです。
    一体これはどんな割り込み処理が働いているのでしょう・・・

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック投稿者 hideki18

    (@hideki18)

    一応できるようになったのでご報告だけさせていただきます。
    しかし、理由がしっくり来ないのですが・・・

    $redirect_to = site_url(ここにhttp://からのURL);

    とsite_urlで囲ってやると飛んでくれました。
    site_urlで出力されるURLも
    この関数につっこむ内容も同じなんですけどね・・

    このようにsite_urlやclean_urlで囲ってやらないとリダイレクトが
    聞かないケースが多いです。
    謎です。。
    また調べて見たいと思います。

    が、もし何かお心当たりなどなんでも結構ですのでいただけましたら
    幸いです。
    よろしくお願いします。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    $redirect_to = ‘http://yahoo.co.jp’;
    echo $redirect_to;
    exit;
    とすると、
    なんと
    http://domain/wordpresshttp://yahoo.co.jp
    と表示されるのです。

    原則として、redirect_to には他のサイトを入れられません。リダイレクト先として許可されたホストでない限り、管理パネルの URL に書き換えられてしまいます。

    また、HTTP の Location ヘッダの仕様として、ホスト名から書くことが必要です。書かれている結果はちょっと不思議な気もしますが、これらの仕様からはありえる動作です。

    site_url や clean_url を通すと、安全な URL かどうかを判定して出力しますので、その結果であれば、そのまま通るのでしょう。wp-includes/pluggable.php にある wp_safe_redirect() などの関数を調べてみてください。

    あと、ホスト名の例示として「domain」だけの単語を使われていますが、example.com や example.jp などが用意されていますので、こちらを使った方が何かと便利です。「domain」だと意味的にちょっと変です (まだ「FQDN」と書くなら分からなくもないですが)。

    トピック投稿者 hideki18

    (@hideki18)

    lilyfan様

    いろいろアドバイスいただきまして
    ありがとうございます。
    とても参考になります。
    リダイレクトについてはまだ謎ですが、
    wp_safe_redirect() について調べてみます。

    example.comについても了解いたしました。
    あまり慣例を知らないので
    勉強になります。

    ありがとうございます。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「ユーザーログイン後のリダイレクト」には新たに返信することはできません。