APIで使うパラメータを渡すのに便利!WordPressでパラメータをURLに付加する方法

こんにちは!

APIが大好きなかちょんです。

APIをリクエストするときのパラメータを、WordPress上で遷移先のページに渡す方法がわからなかったのでそれを調べてまとめました。

方法としては、パラメータを配列にしてadd_query_arg()というタグを使えばいいのですが、もともとWordPress側で設定されたパラメータでないと消されてしまうので、add_filterを使ってそのパラメータを設定してあげる必要があります。

ということで、方法は次のとおり

目次

付加するパラメータは配列にいれよう

まずは、付加するパラメータを配列に入れておきます。

$query = array (
	'para1' => 'data1',
	'para2' => 'data2',
	'para3' => 'data3'
);

これは簡単ですね。

使うパラメータをadd_filterで$public_query_varsに付加しておこう

まずは、WordPressのwp-includesというフォルダにあるclass-wp.phpというファイルをみてみてください。

一番最初に、 class WP とあり、その中に$public_query_varsが設定されています。


var $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', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type');

使用するパラメータは、この$public_query_varsに含まれている必要があります。

で、ここに直接、’para1′ , ‘para2’, ‘para3’と追加しても動きますが、こうするとWordPressのアップデートの時に更新されて使えなくなったり、そもそもこのフォルダにあるファイルをいじることはあまりおすすめできないので、テーマのfunctions.phpの中にadd_filterを使って付加します。

以下のコードをfunctions.phpに記載します。


function add_meta_query_vars( $public_query_vars ) {
	$public_query_vars[] = 'para1';
	$public_query_vars[] = 'para2';
	$public_query_vars[] = 'para3';
	return $public_query_vars;
}
add_filter( 'query_vars', 'add_meta_query_vars' );

URIを表示したいところで、echo add_auery_arg()

add_query_arg( $query, 遷移先のURL )をechoするとパラメータが付加されたURLが出力されます。

たとえば、

example.com/test?para1=data1&para2=data2&para3=data3

のリンクURLを表示させたい時は下記のようにします。

<a href="<?php echo add_query_arg( $query, bloginfo('url').'/test'; ?>">リンク</a>

その後に

ちなみに、渡したパラメータは、get_query_varを使って取得します。

 $para1 = get_query_var('para1');

こんな感じ。

ではー!

参考

WordPress › フォーラム » カスタムフィールド値で管理画面(投稿一覧)を並び替え

WordPress Snippet | リクエストURLにクエリを追加する

[WordPress] URLパラメータを簡単に追加・削除する関数 | webox blog

WordPress › フォーラム » URLに付けたパラメータが遷移先のページに渡らない

add_filter:WordPress私的マニュアル