質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.76%

  • PHP

    19222questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    6674questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Wordpress会員サイトで、ログインページや投稿ページによって、ログイン後のリダイレクト先を変更したい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 307

katekin

score 1

前提・実現したいこと

ここに質問したいことを詳細に書いてください
Wordpressで少人数向けの会員制サイトを作っています。

非ログイン状態で、管理画面(wp_login.php)にアクセスした際は、
ログイン画面→各ユーザー専用の固定ページ、

非ログイン状態で、投稿ページにアクセスした際は、
ログイン画面→表示させたい投稿ページ

とさせたいと考えています。

何卒、よろしくお願い致します。

発生している問題・エラーメッセージ

Wordpressにてユーザーを作成し、Peter’s Login Redirectというプラグインで
リダイレクトさせ、

User Access Managerというプラグインで、ユーザーごとに閲覧可能な投稿ページを設定、非ログイン状態の場合はログイン画面に移行するという設定をしました。

非ログイン状態で投稿ページへアクセスする際、
ログイン画面には切り替わるのですが、入力するとリダイレクトされて
表示させたい投稿ページではなく、固定ページに移動してしまい、困っています。
(まあ、当たり前なのですが...)

function.phpからコードなど設定し、投稿ページからのログインと管理画面へのログインをわけて指示をだすことはできるのでしょうか。プラグイン使用ではなく、コード入力でも構いません。

試したこと

インターネットで調べてみましたが、知識が乏しく、どうしていいかわかりませんでした。

補足情報(言語/FW/ツール等のバージョンなど)

Wordpress4.8.4

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

wp_loginにフックすることでユーザーがログインした後に何かしら処理をすることができます

function my_login_redirect ($user_login, $user) {
  // リダイレクト処理
}
add_action('wp_login', 'my_login_redirect');

どのページからログインページにアクセスされたかは、リファラを見るか、遷移時に何かしらパラメータを渡してリダイレクトを切り分けたら良いでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/23 12:00 編集

    ご回答頂き誠にありがとうございます。大変参考になりました。

    参考にさせて頂き作成したのですが、
    ドメイン名(以下でいうとdomein)を判定の基準にすると、動くのですが、
    ?redirect_to=以降の文字列を判定の基準に(以下でいうとtoukou)すると動かなくなってしまいます。

    パラメータを渡す、リファラを見るの部分が理解できていないのではないかと思っています。
    お手数おかけし誠に恐縮でございますが、ご教示頂ければ幸いでございます。

    詳細が以下でございます。何卒、よろしくお願い致します。

    -----------------------------------

    【domein.com/toukou/kiji/へのアクセスの場合】
    投稿ページのみ/toukou/のパスがつくようにwordpressパーマリンク設定し、
    以下コードをfunction.phpに設定しました。

    【function.php】
    //非ログインの状態でサイトにアクセスした場合、ログイン画面へ
    <?php
    function require_login() {
    if ( ! is_user_logged_in() && ! preg_match( '/^(wp-login.php|async-upload.php)/', basename( $_SERVER['REQUEST_URI'] ) ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
    auth_redirect();
    }
    }
    add_action( 'init', 'require_login' );
    ?>

    //ログインの際のURLを取得し、toukouが入っているか判定(?redirect_to=以降のアドレスを取得)
    <?php $url = $_SERVER['REQUEST_URI']; ?>
    <?php if(strstr($url,’toukou’)): ?>
    //toukouが入っていない場合のみリダイレクト
    <?php else: ?>
    <?php
    add_action('wp_login', 'redirect_roll', 10, 2);
    function redirect_roll($user_login, $user){
    if( $user->ID == 3 ){
    wp_redirect( ‘ユーザーID3のリダイレクト’先のURL’ );
    exit();
    }
    if( $user->ID == 4 ){
    wp_redirect( 'ユーザーID4のリダイレクト’先のURL' );
    exit();
    }
    if( $user->ID == 2 ){
    wp_redirect( 'ユーザーID2のリダイレクト’先のURL ');
    exit();
    }
    else{

    }
    }
    ?>
    <?php endif; ?>

    キャンセル

0

いろいろ試して、ダッシュボードにアクセスした際、
ユーザー毎にリダイレクト先を分岐するという方法で調整できました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19222questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    6674questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • トップ
  • PHPに関する質問
  • Wordpress会員サイトで、ログインページや投稿ページによって、ログイン後のリダイレクト先を変更したい