【WordPress】GETパラメータを使う方法

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で確認することができます。

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.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関数です。

パラメーターを2つの引数として指定

add_query_arg( $param1, $param2, $old_query_or_uri );

パラメーターを キー > バリュー ペアの配列として指定

add_query_arg( array(‘key1’ > ‘value1’, …), $old_query_or_uri );

先程の例で行くと

http://example.com/index.php?key=value

add_query_arg( ‘key’, ‘value’, ‘http://example.com/index.php’ );

という感じになります。

そしてなにより、この関数の優れた点は、第3引数はクエリ付きのURLでも構わないというところです。引数の内容を考慮して、新しいクエリ付きURLを再構築してくれます。

クエリ変数を受け取る方法

最後に与えられたクエリ変数を取り出す方法です。そのためには、get_query_var関数を使います。

$param = get_query_var(‘クエリ変数’);

例えば、archive.phpは、与えられたクエリ変数によって、特定のカテゴリ一覧や過去の年月の一覧を表示しています。

仕組みが分かれば、好きなクエリ変数を与えて、query_posts()で条件を絞って表示、みたいなこともできそうです。

1 Comment

コメントを残す

メールアドレスが公開されることはありません。