PATH_INFOを取得してhiddenに代入
URLにパラメータをくっつけて、GETで送信する場合、
1 |
http://www.example.com/?param0=aaa¶m1=bbb |
という感じで渡して、受け取るときは
1 2 |
$param0 = $_GET['param0']; $param1 = $_GET['param1']; |
または
1 2 |
$param0 = $_REQUEST['param0']; $param1 = $_REQUEST['param1']; |
というようにするのが一般的ですが、以下のように、
1 |
http://www.example.com/aaa/bbb/ |
で値を渡して、受け取りは
1 |
$param = split("[/\.]", $_SERVER["PATH_INFO"]); |
とすると、$param[0] に「aaa」が、$param[1] に「bbb」が代入されます。
さて、これを WordPress でやろうとすると、「aaa」とか「bbb」をURLとして処理しようとしてしまい、当然パーマリンクや実体があるわけではないので、表示できません(実体があればそちらを表示しちゃう)。
WordPress では PATH_INFO を使わない方がよさそうなのですが、使わざるを得ない場合、WordPress とは関係なく、一旦 PATH_INFO を受けるプログラムを作成し、そこから何かしらの方法で WordPress にパラメータを渡すようにします。
受け方は上記の通りなので、あとは渡し方になるのですが、手軽なのは GET でリダイレクトする方法でしょう。
1 2 3 |
$url = "遷移先URL?param0=" . $param0 . "¶m1=" . $param1; header("HTTP/1.1 301 Moved Permanently"); header("Location: " . $url ); |
GETではURLにパラメータが見えるということであれば、セッションを使う方法もある。
1 2 3 4 5 6 7 8 |
session_start(); $_SESSION[ 'param0' ] = $param0; $_SESSION[ 'param1' ] = $param1; $url = "遷移先URL; header("HTTP/1.1 301 Moved Permanently"); header("Location: " . $url ); |
cookie が使えればこれでよいが、使えないなら
1 |
header("Location: " . $url . "?" . session_name() . "=" . session_id() ); |
として、GETでセッションIDを渡せばよい。