拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
ブログ記事詳細検索プラグイン(その27・検索フォーム/検索結果表示の事例・タグのAND検索)
検索フォームを使って、タグのAND検索を行うこともできます。
今回は、タグのAND検索を行う場合の検索フォームと、検索結果表示テンプレートの作り方を解説します。
以下のような事例を基に解説します。
- 検索フォームにタグを入力する欄を表示します。
- 検索結果表示用のテンプレートモジュールには、「詳細検索結果」という名前を付けるものとします。
1.検索フォームの作成
検索フォームの作成方法は、OR検索の場合と同じです。
フォームに、タグを入力するためのテキスト入力欄を1つ作ります。
フォームの作り方は、OR検索の記事を参照してください。
2.検索結果テンプレートの作り方
次に、検索結果テンプレートを作ります。
AND検索を行う場合、MTSearchConditionsTagSectionタグのブロックの中で、ANDで結ぶ条件毎に、MTSearchConditionTagタグを実行します。
そこで、フォームで入力されたタグの並びを、1つ1つのタグに分解して、MTSearchConditionTagタグを順次実行するようにします。
2-1.MTGetParamSplitタグ
フォームで入力された文字列を、コンマで区切って分解するには、GetQueryParamプラグインの「MTGetParamSplit」というテンプレートタグを使います。
fieldモディファイアで、フォームの入力要素のname属性の値を指定します。
また、このタグはブロックタグになっています。
区切られた個々の文字列は、変数__value__に代入されるようになっています。
<mt:GetParamSplit field="入力要素のname属性の値"> 変数__value__で、入力された個々の値を処理 </mt:GetParamSplit>
例えば、フォームのタグの入力欄に、「りんご,みかん」と入力したとします。
また、入力欄のname属性を「tag」にしているとします。
この場合、「<mt:GetParamSplit field="tag">」~「</mt:GetParamSplit>」のタグのブロックを実行すると、繰り返し毎に、変数__value__には「りんご」と「みかん」が代入されます。
2-2.検索結果テンプレートの作成
MTGetParamSplitタグを使って、検索結果テンプレートの主要部分を作ると、以下のリストのようになります。
<$mt:GetQueryParamsToVars$> <mt:SearchConditions> <mt:If name="qp_tag"> <mt:SearchConditionTagSection> <mt:GetParamSplit field="tag"> <$mt:SearchConditionTag tag="$__value__"$> </mt:GetParamSplit> </mt:SearchConditionTagSection> </mt:If> </mt:SearchConditions> <mt:IfNonZero tag="SearchLoadedEntryCount"> <p><$mt:SearchLoadedEntryCount$>件</p> <mt:Entries> <$mt:Include module="ブログ記事の概要"$> </mt:Entries> <mt:Else> <p>条件に合う記事がありませんでした。</p> </mt:IfNonZero>
5/7行目のMTGetParamSplitタグで、フォームに入力されたタグの並びを、コンマで区切って分割します。
そして、6行目のMTSearchConditionTagタグで、個々のタグを条件に指定しています。
また、3/9行目のMTIfタグで、タグが全く入力されなかった場合にはMTSearchConditionTagSectionタグのブロックを実行しないようにして、タグの条件を指定しないようにしています。
なお、上記の部分を含むテンプレートの例は、以下のリンクからダウンロードすることができます。
3.SearchEntriesプラグイン関係の記事の一覧
SearchEntriesプラグイン関係のその他の記事は、以下のリンクから参照できます。
- ブログ記事詳細検索プラグイン(その1・概要/インストール/ライセンス)
- ブログ記事詳細検索プラグイン(その2・「ブログ記事のフィールドの値が○○に等しい」場合の検索)
- ブログ記事詳細検索プラグイン(その3・「ブログ記事のフィールドの値に○○を含む」場合の検索)
- ブログ記事詳細検索プラグイン(その4・「ブログ記事のフィールドの値が○○以上」等の場合の検索)
- ブログ記事詳細検索プラグイン(その5・ブログ記事のフィールドどうしでのOR検索)
- ブログ記事詳細検索プラグイン(その6・カテゴリのOR検索)
- ブログ記事詳細検索プラグイン(その7・カテゴリのAND検索)
- ブログ記事詳細検索プラグイン(その8・タグの検索)
- ブログ記事詳細検索プラグイン(その9・カスタムフィールドでの検索の基本)
- ブログ記事詳細検索プラグイン(その10・カスタムフィールドでの検索の応用)
- ブログ記事詳細検索プラグイン(その11・各種の検索条件の指定)
- ブログ記事詳細検索プラグイン(その12・ブログ記事の並べ替え)
- ブログ記事詳細検索プラグイン(その13・検索結果の一部を読み込む)
- ブログ記事詳細検索プラグイン(その14・複雑なOR検索)
- ブログ記事詳細検索プラグイン(その15・検索結果の件数の出力)
- ブログ記事詳細検索プラグイン(その16・検索フォーム作成の基本)
- ブログ記事詳細検索プラグイン(その17・検索結果表示テンプレート作成の基本)
- ブログ記事詳細検索プラグイン(その18・検索を動作させるための設定)
- ブログ記事詳細検索プラグイン(その19・検索フォーム/検索結果表示の事例・1つの数値で検索)
- ブログ記事詳細検索プラグイン(その20・検索フォーム/検索結果表示の事例・数値の範囲で検索)
- ブログ記事詳細検索プラグイン(その21・検索フォーム/検索結果表示の事例・数値の範囲をselectで選択)
- ブログ記事詳細検索プラグイン(その22・検索フォーム/検索結果表示の事例・日付で検索)
- ブログ記事詳細検索プラグイン(その23・検索フォーム/検索結果表示の事例・期間で検索)
- ブログ記事詳細検索プラグイン(その24・検索フォーム/検索結果表示の事例・カテゴリのOR検索)
- ブログ記事詳細検索プラグイン(その25・検索フォーム/検索結果表示の事例・カテゴリのAND検索)
- ブログ記事詳細検索プラグイン(その26・検索フォーム/検索結果表示の事例・タグのOR検索)
- ブログ記事詳細検索プラグイン(その27・検索フォーム/検索結果表示の事例・タグのAND検索)
- ブログ記事詳細検索プラグイン(その28・検索フォーム/検索結果表示の事例・ドロップダウン/ラジオボタンのカスタムフィールドの検索)
- ブログ記事詳細検索プラグイン(その29・検索結果のページ分割/静的な検索の場合)
- ブログ記事詳細検索プラグイン(その30・検索結果のページ分割/動的な検索の場合)
- ブログ記事詳細検索プラグイン(その31・検索結果のページ分割/PHPによるキャッシュ)
- SearchEntriesプラグインでMore Custom FieldsプラグインのCheckbox Groupを検索する(静的編)
- SearchEntries プラグインでMore Custom FieldsプラグインのCheckbox Groupを検索する(動的編)
- SearchEntriesプラグイン不具合修正