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

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

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

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

PHP

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

Q&A

解決済

3回答

807閲覧

ログイン後のリダイレクト先を「_GET」で取得したURLにしたい

toshi-104

総合スコア12

WordPress

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

PHP

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

0グッド

0クリップ

投稿2023/02/20 02:12

実現したいこと

投稿記事からログイン画面にURLの値を渡し、値がある場合はログイン後に当該URLにジャンプさせたいと考え、下記実装をしております。

■個別投稿 (single.php)

HTML

1<form role="search" method="get" id="postURL" action="'.get_bloginfo('url').'/ログイン画面アドレス"> 2<input type="hidden" name="postURL" value="'.get_the_permalink().'"> 3・・ 45

■functions.php

PHP

1 add_action('wp_login', 'redirect_roll', 10, 2); 2 function redirect_roll($user_login, $user){ 3 $postURL = $_GET['postURL']; 4 if($postURL){ 5 $postURL; //①取得したURL 6 }else{ 7 $postURL = get_bloginfo('url').'/wp-admin/admin.php?page=menu-user'; //②ACFオプションページ 8 } 9 wp_redirect($postURL); 10 exit(); 11 }

アドレスバー、ならびに下記で取得した値を見る限りURLは取得できていると思えるのですが、上記②の方に遷移してしまいます。

■functions.php

PHP

1 function login_test() { 2 $postURL = $_GET['postURL']; 3 $test = '<p>'.$postURL.'</p>'; 4 return $test; 5 } 6 add_filter('login_message', 'login_test');

PHPに関して浅はかな知識しか持ち合わせておりませんが、どなたかご教授いただけますと幸いです。

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

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

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

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

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

guest

回答3

0

ログイン後のリダイレクトのURLを指定したいならwp_login_urlで第1引数にリダイレクト先のURLを指定してログイン画面のURLを作るのでできます。

デフォルトのリダイレクトURLを指定したいのであればlogin_redirectのフィルタフックで第2引数$requested_redirect_toが空の場合にデフォルトのリダイレクトURLを返すなどするとできます。

投稿2023/02/20 08:43

KazuhiroHatano

総合スコア7804

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

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

toshi-104

2023/02/21 00:03

ご教授ありがとうございました! 勉強になります。 今回はtabuuさんのご教授が私の求めるものに近かったのですが、至らない説明にご教授いただき重ねてお礼申し上げますm(_ _)m
guest

0

ユーザーから送られてきたサイトへのリダイレクトは無限ループになる場合もあるので課題がありそうですが
とりあえずheaderでLocationを指定してあげてください

PHP

1<?PHP 2$url=filter_input(INPUT_GET,"url",FILTER_VALIDATE_URL); 3if(!empty($url)){ 4 header('Location: '.$url); 5} 6?> 7<form> 8<input name="url" value="https://www.google.com"> 9<input type="submit" value="send"> 10</form>

投稿2023/02/20 03:00

yambejp

総合スコア114812

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

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

toshi-104

2023/02/21 00:05

ご教授ありがとうございます! Wordpressの「get_the_permalink()」でURLが取得できていたので「_POST」でうまくいきました。 至らない説明にご教授いただき重ねてお礼申し上げますm(_ _)m
guest

0

ベストアンサー

下記のようなタグをログインフォームに挿入する必要があります。
<input type="hidden" name="postURL" value="<?php echo $_GET['postURL']; ?>">

そしてwp_loginで取得する場合はGETではなくPOSTです。
$postURL = $_POST['postURL'];

投稿2023/02/20 03:32

tabuu

総合スコア2449

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問