1つの数値で検索
更新日:2024.02.01
SearchEntriesプラグインを使うと、さまざまな検索を行うことができます。
そのため、検索フォームの作り方も、行いたい検索によってさまざまです。
今回は、「フィールドの値が○○以上」など、1つの数値で条件を指定して検索する場合を説明します。
以下のような事例を基に解説します。
- 商品の価格を表すために、「entry_price」というベースネームのカスタムフィールドを作っているものとします。
- 検索結果表示用のテンプレートモジュールには、「詳細検索結果」という名前を付けるものとします。
- 「価格が○○円以下」という条件で検索できるようにします。
検索フォーム側
検索フォーム側には、比較対象の数値を入力するために、テキスト入力欄を1つ作ります。
テキスト入力欄のname属性を「entry_price」にするなら、テンプレートの検索フォーム部分は以下のように組むことが考えられます。
<form method="get" action="<$mt:RealtimeRebuildCGIPath$>">
<input type="hidden" name="blog_id" value="<$mt:BlogID$>" />
<input type="hidden" name="tmpl_id" value="<$mt:GetTemplateID tmpl_name="詳細検索結果"$>" />
<p>
<label for="entry_price">価格が</label>
<input type="text" name="entry_price" id="entry_price" />円以下
</p>
<p>
<input type="submit" value="送信" />
</p>
</form>
検索結果表示テンプレート側
検索結果表示テンプレート側では、以下のような手順で、検索結果を出力します。
- MTGetQueryParamsToVarsタグを使って、フォームから送信された値を変数に代入します。
- MTSearchConditionCompareタグやMTSearchConditionCFSectionタグ/MTSearchConditionCFCompareタグを使って、数値での検索条件を指定します。
「検索フォーム側」で作ったフォームだと、MTGetQueryParamsToVarsタグによって、入力された数値は「qp_entry_price」という変数に代入されます。
また、カスタムフィールドで検索するので、MTSearchConditionCFSectionタグとMTSearchConditionCFCompareタグを使って条件を指定します。
上記の話に沿って、検索結果表示テンプレートの検索部分を作ると、以下のようになります。
<$mt:GetQueryParamsToVars$>
<mt:SearchConditions>
<mt:SearchConditionCFSection field="entry_price">
<$mt:SearchConditionCFCompare le="$qp_entry_price"$>
</mt:SearchConditionCFSection>
</mt:SearchConditions>