【WordPress】検索クエリのURLにオリジナルのパラメーター を追加したい

やりたいこと

WordPressの検索URL(例:/?s=キーワード)に、自分で決めた ?param1=VALUE のようなパラメーターを追加して、さらに処理に使えるようにしたい!

ステップ 1:WordPressに独自パラメーターを認識させる

仮にパラメーター変数名をparam1とした場合のコードです。

function add_query_vars_filter( $vars ){
	$vars[] = "s";      // 検索キーワードの「s」はもともと使われています
	$vars[] = "param1"; // オリジナルクエリを追加
	return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );

▲$vars[] = “param1”; で、param1 という名前の URLパラメーターをWordPressが認識してくれます。

ステップ 2:検索フォームに隠しフィールドを追加する

検索フォーム(searchform.php やテンプレート内)に以下を追加:

<input type="hidden" name="param1" value="VALUE">

これにより、検索ボタンを押すと自動で param1=VALUE がURLにセットされます。

例:フォーム全体のイメージ

<form class="searchform" role="search" method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
	<label class="searchform__label" for="s"><?php _x( 'Search for:', 'label' ); ?></label>
	<input class="searchform__input" type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" placeholder="検索する" />
	<input type="hidden" name="param1" value="VALUE">
	<button class="searchform__submit" type="submit" id="searchsubmit" value="">検索</button>
</form>

検索フォームで、検索ボタンをクリックすると以下のようなURLになります。

https://monzen-creative.com/?s=keyword&param1=VALUE

ステップ 3:取得したパラメーターで処理する

param1=VALUE というURLパラメーターを受け取り、値を画面に出力するまでのサンプルコードです。このコードを参考に出力した値をうまく処理してみてください。

<?php
// param1の値を取得
$param1 = get_query_var( 'param1' )

// 値がある場合だけ処理する
if ( $param1 ) {
    echo '<p>パラメーター param1 の値は:' . esc_html($param1) . '</p>';
}

石井秀幸@WEBデザイナー
WordPress公式『横浜 WordPress Meetup』主宰/株式会社ノクチ基地 取締役/モンゼンクリエイティブ合同会社 代表。WEB制作に関する技術や役立つ情報を発信していきます。10年にわたるWordPress歴を背景に、幅広いアイデアを形にするお手伝いをしています。