リファラーページによって、ログイン後のリダイレクト先を変更したい

wp-memberで作られたログイン後のリダイレクト先を、リファラーによって変更したいのです。

ルートA
ライブラリページ
→(ログインしていない人はログインへ)のリンク(※1)
→ ログインページでログイン
→ ライブラリ

ルートB
ライブラリページ以外のページ
→ ログインページでログイン
→ マイページ

※1で以下の様なパラメーターを渡しております。

html

<input type="hidden" name="a" value="library">

ログインページのログインのformをよく観察したところ以下の様なhidden要素がありました。
ルートAの時は

html

<input type="hidden" name="_wp_http_referer" value="/login?a=library">

ルートBの時は

html

<input type="hidden" name="_wp_http_referer" value="/login">

このvalueの違いを利用してリダイレクト先を変更可能と考えて
functions.phpに以下の様に書き込んでみたのですが、
[/(スラッシュ)]のエスケープ処理など調べながらいろいろ書き方を変更してみても
期待通りの動作をしてくれず常にマイページに移動のルートBを通ってしまいます。

php

if(isset($_GET['_wp_http_referer'])) { $ref = $_GET['_wp_http_referer']; }; if( $ref == '\/login?a=library' ){//ルートA function my_login_redirect( $redirect_to, $user_id ) { return home_url('/library/'); }} else {//ルートB function my_login_redirect( $redirect_to, $user_id ) { return home_url('/mypage/'); } } add_filter( 'wpmem_login_redirect', 'my_login_redirect', 10, 2 );

どの様にしたらルートAが実現できますでしょうか?
よろしくお願いいたします。

【試した事】
先日似た件を投稿しております。
https://teratail.com/questions/l6d5j1uhmel257
この日は異なるログインページを複数作成しようと考えておりましたが、プラグインの仕様で無理と判断。
パラメーターを渡してリダイレクト先を変更する方向に切り替えました。
上記質問の中で不具合として画面が真っ白になる件を上げておりましたが、
現在/mypage/の箇所を/library/と変更してもページが表示できることは確認しています。

コメントを投稿

0 コメント