WordPressの作られたページをみていると、パーマリンクの設定にもよりますが、パラメータを含んだURLを見かけます。たとえば、
http://example.com/index.php?key=value
みたいな感じです。この場合、index.phpに対して、keyという項目に、valueという値を与えてます。
こういったパラメータの与え方をGETメソッドといい、与えられたパラメータkeyをGETパラメータと呼びます。特に、WordPressにおいては、GETパラメータのことをクエリ変数と呼びます。
今回は、WordPressでクエリ変数を使う方法について、まとめます。
クエリ変数の登録方法
WordPressでは、クエリ変数を使うには、使うクエリ変数を登録してあげる必要があります。
ここで気を付けることは、いくつかの名前はすでに予約されており、使用することはできないということです。ですので、被らないようにそれらを避けて登録します。
予約されている名前にどのようなものがあるかは、wp-includesフォルダ内のclass-wp.phpで確認することができます。
public $public_query_vars = array(‘m’, ‘p’, ‘posts’, ‘w’, ‘cat’, ‘withcomments’, ‘withoutcomments’, ‘s’, ‘search’, ‘exact’, ‘sentence’, ‘calendar’, ‘page’, ‘paged’, ‘more’, ‘tb’, ‘pb’, ‘author’, ‘order’, ‘orderby’, ‘year’, ‘monthnum’, ‘day’, ‘hour’, ‘minute’, ‘second’, ‘name’, ‘category_name’, ‘tag’, ‘feed’, ‘author_name’, ‘static’, ‘pagename’, ‘page_id’, ‘error’, ‘attachment’, ‘attachment_id’, ‘subpost’, ‘subpost_id’, ‘preview’, ‘robots’, ‘taxonomy’, ‘term’, ‘cpage’, ‘post_type’, ‘embed’ );
この配列$public_query_varsに登録されている要素が、Wordpress内であらかじめ予約されているクエリ変数になります。catやtagあたりは、見たことあるかもしれません。
今回は、これらの名前を避けて、配列$public_query_varsに新しいクエリ変数を追加します。
早速、子テーマのfunction.phpに以下のコードを追加します。
function custom_query_vars( $public_query_vars ) {
$public_query_vars[] = ‘新しいクエリ変数’;
return $public_query_vars;
}
add_filter( ‘query_vars’, ‘custom_query_vars’ );
クエリ変数の使用方法
クエリ変数の登録が終わったところで、次にどのように使うかという問題です。
クエリ変数はGETパラメータと同じ要領でURLの後ろにくっ付けて書きます。
記事中やカスタムリンクに貼るくらいの用途なら、直書きでもいいかもしれません。でも、プログラム中に書く場合はそうはいきません。かといって、ドット演算子を用いて文字列を結合するのは大変です。
そこで便利なのがadd_query_arg関数です。
add_query_arg( $param1, $param2, $old_query_or_uri );
add_query_arg( array(‘key1’ > ‘value1’, …), $old_query_or_uri );
先程の例で行くと
add_query_arg( ‘key’, ‘value’, ‘http://example.com/index.php’ );
という感じになります。
そしてなにより、この関数の優れた点は、第3引数はクエリ付きのURLでも構わないというところです。引数の内容を考慮して、新しいクエリ付きURLを再構築してくれます。
クエリ変数を受け取る方法
最後に与えられたクエリ変数を取り出す方法です。そのためには、get_query_var関数を使います。
$param = get_query_var(‘クエリ変数’);
例えば、archive.phpは、与えられたクエリ変数によって、特定のカテゴリ一覧や過去の年月の一覧を表示しています。
仕組みが分かれば、好きなクエリ変数を与えて、query_posts()で条件を絞って表示、みたいなこともできそうです。
[…] 【WordPress】GETパラメータを使う方法 […]
[…] GET パラメータを使う方法 | tamalog […]