Wordpressを使っているときに、URLに独自のパラメータ、変数をつける方法です。

普通にWordpressを使うと、URLって、http://www.hoge.jp/?p=10みたいなカタチになります。
一応管理画面で、URLをいじることはできますが、このURLにfood=1とかneko=3とかの値を常に追加して表示したいことが、アクセス解析とかの関係であったりします。

例えば、もともとは http://www.hoge.jp/?p=10 ってURLを出力されるものを強制的に http://www.hoge.jp/?p=10&food=1&neko=3 って必ず「&food=1&neko=3」みたいに、何かパラメータや値がつくようなものをつくりたいとき、add_filter()使えば、簡単にできるだろーと思ってやってみると、うまく行きません。
サーバーではmod_write()が使えないので、どうしたものか、と色々考えたあげく、以下のようなソースをheader.phpを書くことで解決しました。

<?php
if(!$_GET['food']){
$url = add_query_arg( array('food'=>'1', 'neko'=>'3'), $_SERVER['REQUEST_URI'] );
header('Location: '.$url);
exit();
}
?>

PHPのheader()を使って、URLを移動させるだけですが、header()にそのまま値を追加してって、つくると当たり前ですが、延々と同じURLに値を足してしまい、ループでアクセス不能になります。

また追加したい値がすでについていれば、追加する値を$_GET()ですでに存在するかを確認するようにしてheader()を使っても、やはり延々とURLに値を足してしまい、ページが表示できなくなります。

そこで使うのがadd_query_arg()。これはWordpressの命令です。

この命令については詳しくは下記を参考にするといいでしょう。

add_query_arg()でパラメータを追加するときは、配列で加えます。
表示するページのURLを$_SERVER['REQUEST_URI']で取得して、そのままパラメータを加えれば解決では? と思うかもしれませんが、実はそれもダメなので、add_query_arg()でパラメータを加えます。

add_query_arg( array( 'ver1'=>'hogehoge' ) , $_SERVER['REQUEST_URI']) というカタチでURLを作ります。array( 'ver1'=>'hogehoge' )の部分は配列です。
値を複数追加したいときはarray( 'ver1'=>'hogehoge' ,  'ver2'=>'hogehoge2' ,  'ver3'=>'hogehoge3' )と設定します。

すでにあるURLにパラメータをつけたいけど、うまく行かない方は参考にしてください。


ブログの反応がどれくらいあるか、知りたいので、ランキングサイトに入ってみました。よろしければクリックお願いします。
にほんブログ村 デザインブログ Webデザインへ