Contents
やりたいこと
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>';
}