PATH_INFOを取得してhiddenに代入

URLにパラメータをくっつけて、GETで送信する場合、

http://www.example.com/?param0=aaa&param1=bbb

という感じで渡して、受け取るときは

$param0 = $_GET['param0'];
$param1 = $_GET['param1'];

または

$param0 = $_REQUEST['param0'];
$param1 = $_REQUEST['param1'];

というようにするのが一般的ですが、以下のように、

http://www.example.com/aaa/bbb/

で値を渡して、受け取りは

$param = split("[/\.]", $_SERVER["PATH_INFO"]);

とすると、$param[0] に「aaa」が、$param[1] に「bbb」が代入されます。

さて、これを WordPress でやろうとすると、「aaa」とか「bbb」をURLとして処理しようとしてしまい、当然パーマリンクや実体があるわけではないので、表示できません(実体があればそちらを表示しちゃう)。

WordPress では PATH_INFO を使わない方がよさそうなのですが、使わざるを得ない場合、WordPress とは関係なく、一旦 PATH_INFO を受けるプログラムを作成し、そこから何かしらの方法で WordPress にパラメータを渡すようにします。

受け方は上記の通りなので、あとは渡し方になるのですが、手軽なのは GET でリダイレクトする方法でしょう。

$url = "遷移先URL?param0=" . $param0 . "&param1=" . $param1;
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $url );

GETではURLにパラメータが見えるということであれば、セッションを使う方法もある。

session_start();

$_SESSION[ 'param0' ] = $param0;
$_SESSION[ 'param1' ] = $param1;

$url = "遷移先URL;
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $url );

cookie が使えればこれでよいが、使えないなら

header("Location: " . $url . "?" . session_name() . "=" . session_id() );

として、GETでセッションIDを渡せばよい。