拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
ブログ記事詳細検索プラグイン(その25・検索フォーム/検索結果表示の事例・カテゴリのAND検索)
昨日はカテゴリのOR検索を行う方法を解説しました。
それと同じような手法で、AND検索を行うこともできます。
今日はその手順を解説します。
以下のような事例を基に解説します。
- 昨日の記事の冒頭の画面のように、検索フォームにカテゴリの一覧を表示し、チェックボックスでカテゴリを選べるようにします。
- 検索結果表示用のテンプレートモジュールには、「詳細検索結果」という名前を付けるものとします。
1.検索フォームの作成
検索フォームは、OR検索の場合とまったく同じ方法で作ることができます。
複数選択可能なselectか、name属性が同じチェックボックスを複数使って、カテゴリを複数選択できるようにします。
具体的なフォームの作り方は、昨日の記事を参照してください。
2.検索結果テンプレートの作成
検索結果テンプレートも、OR検索の場合と似た手順で作ることができます。
ただし、MTSearchConditionCategoryタグの使い方が異なります。
OR検索の場合は、MTSearchConditionCategoryタグのcategoryモディファイアに、検索対象のカテゴリ名が入った配列を指定しました。
一方、AND検索の場合は、カテゴリ毎にMTSearchConditionCategoryタグを実行します。
昨日解説したように、フォームで選択されたカテゴリは、「qp_name属性_a」のような名前の配列変数に代入されます。
MTLoopタグを使ってこの配列からカテゴリ名を1つずつ順に取り出し、それをMTSearchConditionCategoryタグに指定するようにします。
ここまでの話に基づいて、検索結果テンプレートの主要部分を作ると、以下のようになります。
<$mt:GetQueryParamsToVars$> <mt:SearchConditions> <mt:If name="qp_cat_a"> <mt:SearchConditionCategorySection> <mt:Loop name="qp_cat_a"> <$mt:SearchConditionCategory category="$__value__"$> </mt:Loop> </mt:SearchConditionCategorySection> </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行目のMTLoopタグで、フォームで選択されたカテゴリを1つずつ取り出します。
そして、6行目のMTSearchConditionCategoryタグで、各カテゴリを検索条件に指定し、カテゴリ間のAND検索を行います。
なお、上記の部分を含むテンプレートの例は、以下のリンクからダウンロードすることができます。
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プラグイン不具合修正