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

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

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Q&A

解決済

1回答

5550閲覧

ログイン後のリダイレクト

takeyo

総合スコア11

WordPress

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

1グッド

0クリップ

投稿2019/06/09 07:48

いつもお世話になっております。

会員制サイトを運用しており、フロント側にログインページに遷移できる導線を設置しております。
ログインURLは以下の様に、元いるページにリダイレクトするような形で設置しております。

<a href="<?php echo wp_login_url( $_SERVER['REQUEST_URI'] ); ?>">ログイン</a> 出力されるURL:/wp-login?redirect_to=【元いるページのURI】

「/wp-login」の後ろにパラメータが付いた場合は、指定したページにリダイレクトされるのですが、
パラメータが付いていない状態でログインすると、/wp-admin/の管理画面にリダイレクトされてしまいます。

上記より、トップページにリダイレクトされるようにfunction.phpに以下のように記述しましたが、
以下のように設定すると、「/login?redirect_to=【元いるページのURI】」が無視されて、すべてのログインがトップページにリダイレクトされてしまいます。

function login_redirect_page() { return home_url(); } add_filter('login_redirect', 'login_redirect_page');

ログインのリダイレクトの条件を以下のようにしたいのですが、どのようにすれば良いでしょうか。

A:リダイレクトのパラメータが付いている時は、パラメータのURLにリダイレクト
B:パラメータがついていない時は、function.phpで指定したURLにリダイレクト

恐れ入りますが、わかる方がおりましたら、お教えいただければと思います。

nt605👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

login_redirect フィルターにフックさせる関数は3つの引数をとります。二つ目の引数 $requested_redirect_toredirect_to で渡されるパラメータが入ります。

<?php /** * Filters the login redirect URL. * * @since 3.0.0 * * @param string $redirect_to The redirect destination URL. * @param string $requested_redirect_to The requested redirect destination URL passed as a parameter. * @param WP_User|WP_Error $user WP_User object if login was successful, WP_Error object otherwise. */ function my_login_redirect( $redirect_to, $requested_redirect_to, $user ) { .... } add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );

A:リダイレクトのパラメータが付いている時は、パラメータのURLにリダイレクト
B:パラメータがついていない時は、function.phpで指定したURLにリダイレクト

であれば、

php

1<?php 2function login_redirect_page( $redirect_to, $requested_redirect_to, $user ) { 3 if ( '' === $requested_redirect_to ) { 4 return home_url(); 5 } 6 return $redirect_to; 7} 8 9add_filter( 'login_redirect', 'login_redirect_page', 10, 3 );

で可能だと思います。

投稿2019/06/09 13:56

YukiYamashina

総合スコア1011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問