Title: ログイン状態を判別してリダイレクトする方法
Last modified: 2016年11月2日

---

# ログイン状態を判別してリダイレクトする方法

 *  解決済 [mikujin](https://ja.wordpress.org/support/users/mikujin/)
 * (@mikujin)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/)
 * お世話になります。
    PHPのテンプレート内に下記の分岐タグを書きたいのですが、書き方
   が分からず困っております。
 * ページ（/abc.html)へアクセスする際、ログイン状態を判別して、
    ログインしている
   場合、ページ（/123.html)へリダイレクト。 ログインしていない場合、ページ（/abc.
   html)をそのまま表示。 さらに、管理者権限でログインしている場合は、リダイレクト
   処理を無効にしたいのすが、どのような書き方をすれば可能でしょうか？
 * ご教授頂けましたら大変助かります。
    宜しくお願いいたします。

13件の返信を表示中 - 1 - 13件目 (全13件中)

 *  [水野史土](https://ja.wordpress.org/support/users/ounziw/)
 * (@ounziw)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210490)
 * ログインしているかどうかを判定する関数に、is_user_logged_inがあるので、
    [https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/is_user_logged_in](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/is_user_logged_in)
 * まずこの関数を使ってみてはいかがでしょうか。
 *  トピック投稿者 [mikujin](https://ja.wordpress.org/support/users/mikujin/)
 * (@mikujin)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210491)
 * ご返信頂きありがとうございます。
    貼り付け頂いたURLは、すでに参照済みなのですが、
   PHP初心者のため、今回実装したいコードへの応用が出来ず困っております。
 * <?php
    if ( is_user_logged_in() ) { echo ‘Welcome, registered user!’;　→ログイン
   ユーザーは、ページ（/123.html)へリダイレクトしたい } else { echo ‘Welcome, visitor!’;
   →非ログインユーザーは、ページ（/abc.html)をそのまま表示したい } ?>
 * お手数ですが、何かアドバイス頂ければ助かります！
    宜しくお願いいたします。
 *  [oisit](https://ja.wordpress.org/support/users/oisit/)
 * (@oisit)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210492)
 * スレ主もwordpressでのリダイレクトを目にしてると思うけど、多分絶対。
    その目にし
   ている仕組みを追っていけばヒントが有るんじゃないでしょうか。 例えば管理画面へ
   入るためのログインのページ。 当然ここにはリダイレクトの仕組みがあるんではない
   でしょうか。 該当ファイルのヒントも検索していれば色々出てくるような気が [ログインができない場合](http://wpdocs.osdn.jp/%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88)
   特に本日は祝日なのであまり回答がつかないかもしれない。 そういうときに検索勘を
   身に着けておくと役に立つかもしれませんね。
 * ちなみに自分コピペ職人なんでまったくわかってませんけどね。
    ご健闘をお祈りします。
    -  この返信は9年、 11ヶ月前に[oisit](https://ja.wordpress.org/support/users/oisit/)
      が編集しました。
 *  [munyagu](https://ja.wordpress.org/support/users/munyagu/)
 * (@munyagu)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210494)
 * こんにちは
 * リダイレクトはこちらです。
 * [https://wpdocs.osdn.jp/関数リファレンス/wp_redirect](https://wpdocs.osdn.jp/関数リファレンス/wp_redirect)
 *  トピック投稿者 [mikujin](https://ja.wordpress.org/support/users/mikujin/)
 * (@mikujin)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210496)
 * oisit様、ご回答ありがとうございます。
 * はい。おっしゃる通り、リダイレクトのコードは、別のテンプレート内で下記のタグを
   使用しております。
 * <?php
    if (!is_user_logged_in()) { auth_redirect(); }
 * これを今回やりたいことに当てはめながら、いじっておりましたが、私も検索＆コピペ
   ばかりなので、応用が出来ず、この度、質問をさせて頂いた次第です。
 * 上記コードは、「ログイン状態判別後、ログインしていなかったら、ログイン画面へリ
   ダイレクト」
    やりたいのは、「ログイン状態判別後、ログインしていたら、任意のページ
   にリダイレクト」
 * 貴重なお時間を頂きご回答下さりきありがとうございました。
    引き続き検索しながら
   情報を探してみます。
 *  トピック投稿者 [mikujin](https://ja.wordpress.org/support/users/mikujin/)
 * (@mikujin)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210497)
 * munyagu様、ご回答ありがとうございます。
    参照先のURL確認いたしました。ありがとう
   ございます。
 * これまで頂いた情報をまとめて、再度コードを書いてみましたが、実装できませんでした。。。。
   
   下記の式で間違っている箇所はありますでしょうか？
 * <?php
    if ( is_user_logged_in() ) { /*ログイン状態を判別して*/ echo ‘wp_redirect(
   home_url([http://xxx.com/123.html](http://xxx.com/123.html)) )’;/*ログインしてい
   たら123へリダイレクト*/ } else { echo ‘home_url([http://xxx.com/abc.html](http://xxx.com/abc.html))’;/*
   ログインしていなかったら、abcをそのまま表示*/ } ?>
 * また、上記の式に管理者権限のリダイレクトを無効にする処理を追記したいのですが、
   もし参考のURLなどありましたら、教えて頂ければ助かります。
    ご返信頂ければ幸い
   です。 宜しくお願い致します。
 *  [oisit](https://ja.wordpress.org/support/users/oisit/)
 * (@oisit)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210526)
 * すでに正解をみつけておいでかもしれませんが、
    ご自分の
 * > `if (!is_user_logged_in()) {
   >  auth_redirect(); }`
 * や@munyagu氏があげたリンク先を再度参照されてはどうでしょう。
    `wp_redirect()`
   は関数であり、`echo`は**文字列**を出力するですよ。 関数を文字列として出力して
   も動かないんじゃないでしょうか。 関数をいちいち検索していると、なんとなくわか
   ってくるから不思議です。 また関連する知識も増えていくので面白いですよ。
    -  この返信は9年、 11ヶ月前に[oisit](https://ja.wordpress.org/support/users/oisit/)
      が編集しました。
 *  [kimipooh](https://ja.wordpress.org/support/users/kimipooh/)
 * (@kimipooh)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210528)
 * 考え方として、
    /abc.html にアクセスした場合限定なので、そのテンプレートがどこ
   で使われているかで、 – /abc.html かつ ログインしていて管理者権限を持っていない
   ユーザーの場合のみ、 /123.html にリダイレクト がベースだと思います。
 * 1. /abc.html の判定
    パーマリンクから取得できないことはないですが、abc.html など
   パーマリンクを変更されているようにお見受けしますので、Refererの方が簡単かな…
 *     ```
       $referer = wp_get_referer();
       if(preg_match("/^abc\.html$", $referer)){
         ここに処理を書く
       }
       ```
   
 * という感じになると思います。
 * 2. ログインしていて管理者権限を持っていないユーザー
 *     ```
       if(is_user_logged_in() && !current_user_can('administrator')){
         ここに処理を書く
       }
       ```
   
 * 3. リダイレクト
    `wp_safe_redirect(home_url() . ‘/123.html’);
 * ですね。
 * これらを組み合わせれば、できるんじゃないかと思います。
 *  [kimipooh](https://ja.wordpress.org/support/users/kimipooh/)
 * (@kimipooh)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210529)
 * 訂正
    3. リダイレクト `wp_safe_redirect(home_url() . '/123.html');`
 *  トピック投稿者 [mikujin](https://ja.wordpress.org/support/users/mikujin/)
 * (@mikujin)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210553)
 * oisit様、ご返信ありがとうございます。
 * 本当にその通りですよね。
    関数の意味なんて私はいちいち分析して考えてなかったので、
   ほしい情報のキーワードだけ検索しているばかりでした。 「echo」というものが、文字
   を表示する際のタグになることなんて考えてませんでした。 こういう意味があるなんて
   はじめて知りました。
 * この度、kimipooh様に頂いた情報も加えて、以下の式でやりたいことをとりあえず実装
   出来ました！
 * <?php
    if(is_user_logged_in() && !current_user_can(‘administrator’)){/*管理者
   以外のログインユーザーなら*/ $url = ‘[http://xxx.com/123.html&#8217](http://xxx.com/123.html&#8217);;/*
   123へリダイレクト*/ wp_redirect($url); exit; } else {/*それ以外は特別処理なし*/}?
   >
 * 色々教えて頂いてありがとうございました。
 *  トピック投稿者 [mikujin](https://ja.wordpress.org/support/users/mikujin/)
 * (@mikujin)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210555)
 * kimipooh様、ご返信ありがとうございます。
 * 以下の式でとりあえずやりたいことを実装出来ました。
    貴重な情報をありがとうござ
   いました。
 * <?php
    if(is_user_logged_in() && !current_user_can(‘administrator’)){/*管理者
   以外のログインユーザーなら*/ $url = ‘http://xxx.com/123.html’;/*123へリダイレクト*/
   wp_redirect($url); exit; } else {/*それ以外は特別処理なし*/ } ?>
 * しかし、下記のリファー関数を加えた式が上手く動かず、上記のように強制的にURLを
   指定する方法をとりました。
    頂いた情報から私が組み合わせた式は以下のようなもの
   です。
 * <?php
    if(is_user_logged_in() && !current_user_can(‘administrator’)){/*管理者
   以外のログインユーザーなら*/ $referer = wp_get_referer(); if(preg_match(“/^abc\.
   html$”, $referer)){/*abcをそのまま表示*/ wp_safe_redirect(home_url() . ‘/123.
   html’);/*非ログインユーザーなら123へリダイクレト*/ } ?>
 * 上記の式で間違っている箇所がありますでしょうか？
    現在の式（リファー関数未使用）
   でやりたいことが実装できておりますが、リファー関数を使用する方が「簡単」という
   以外で、何か理由があるものでしょうか？
 * 何かアドバイス頂ければ幸いです。
    宜しくお願いいたします。
 *  [kimipooh](https://ja.wordpress.org/support/users/kimipooh/)
 * (@kimipooh)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210601)
 * Refererを使うのは、
    /abc.html のときだけ処理したいという要望があったためです。
   Refererは現在アクセスしているページの情報が入っています。 そういうのが不要なら
   必要ありません。
 * たとえば、
    1. abc.html 内にリダイレクト処理をいれてる 2. リダイレクト処理は、
   abc.html専用のテンプレートを使っている という感じです。
 * テンプレートを使いまわしているケースでは、Refererなどの処理が必要になるという
   ことです。
    そのあたりの詳細構造がわからなかったので、一般的な対応策をいれたので
   した。
 * また
    $referer = wp_get_referer(); var_dump($referer);
 * として、$referer にどういった文字が入っているか確認してみるとよいです。
    [http://◯◯/abc.html](http://◯◯/abc.html)
   なら /abc.html が入っているはずなんですけどね。 それをみて、 /abc.html だったら
   という処理をいれるという感じです。ですがテンプレートが abc.html 専用なのであれ
   ば不要です。
 *  トピック投稿者 [mikujin](https://ja.wordpress.org/support/users/mikujin/)
 * (@mikujin)
 * [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210656)
 * kimipooh様、ご返信ありがとうございます。
    なるほど。そういう使い分けなのですね。
   abc.htmlの記事に対して、専用のテンプレートを使用しており、1テンプレートに対して
   1記事なので、現在の処理でも問題はなさそうですね。 今後、リファー関数を使用する
   機会がありましたら、改めて参考にさせて頂きます。 すべての問題が解決できました。
   ありがとうございました！！

13件の返信を表示中 - 1 - 13件目 (全13件中)

 トピック「ログイン状態を判別してリダイレクトする方法」には新たに返信することはでき
ません。

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 13件の返信
 * 5人の参加者
 * 最後の返信者: [mikujin](https://ja.wordpress.org/support/users/mikujin/)
 * 最後の活動: [9年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%8a%b6%e6%85%8b%e3%82%92%e5%88%a4%e5%88%a5%e3%81%97%e3%81%a6%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#post-210656)
 * 状態: 解決済

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
