カスタムフィールドでの検索の応用
更新日:2024.02.02
SearchEntriesプラグインでは、複数のカスタムフィールドを組み合わせた検索や、ブログ記事標準のフィールド/カテゴリ/タグを組み合わせた検索も可能です。
複数のカスタムフィールドを組み合わせた検索
複数のカスタムフィールドを組み合わせて検索するには、カスタムフィールドの数だけ、MTSearchConditionCFSectionタグを繰り返し書きます。
例えば、以下のようにカスタムフィールドを定義しているとします。
カスタムフィールド | カスタムフィールド種類 | ベースネーム | テンプレートタグ |
値段 | 整数 | entry_price | MTEntryPrice |
サイズ | テキスト | entry_size | MTEntrySize |
おすすめ | チェックボックス | entry_recommend | MTEntryRecommend |
この状況で、以下のすべての条件を満たすブログ記事を検索したいとします。
- 「おすすめ」のチェックボックスがオンになっている(entry_recommendカスタムフィールドの値が1)
- SかMのサイズがある(entry_sizeカスタムフィールドの値にSかMを含む)
- 1,000円以上2,000円未満(entry_priceカスタムフィールドの値が1,000以上)2,000未満
この場合、3つのカスタムフィールドそれぞれに対して、MTSearchConditionCFSectionタグのブロックを作り、以下のようにテンプレートタグを組みます。
<mt:SearchConditions>
<mt:SearchConditionCFSection field="entry_recommend">
<$mt:SearchConditionCFNotValues values="1"$>
</mt:SearchConditionCFSection>
<mt:SearchConditionCFSection field="entry_size">
<$mt:SearchConditionCFLike values="S,M"$>
</mt:SearchConditionCFSection>
<mt:SearchConditionCFSection field="entry_price">
<$mt:SearchConditionCFCompare ge="1000" lt="2000"$>
</mt:SearchConditionCFSection>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
<ul>
<mt:Entries>
<li><$mt:EntryTitle$>(<$mt:EntryRecommend$>)(<$mt:EntrySize$>)(<$mt:EntryPrice$>)</li>
</mt:Entries>
</ul>
</mt:IfNonZero>
ブログ記事標準のフィールド/カテゴリ/タグを組み合わせた検索
MTSearchConditionタグのブロックの中に、ブログ記事のフィールド/カテゴリ/タグ/カスタムフィールドの条件を続けて書くことで、それら全ての条件を満たすブログ記事を検索することができます。
例えば、前述の例に、さらに以下の条件を追加するとします。
- タイトルに「Tシャツ」を含む
- カテゴリが「シャツ」
- 「Vネック」のタグが付いている
この場合、以下のようにテンプレートを組みます。
<mt:SearchConditions>
<$mt:SearchConditionLike field="title" values="Tシャツ"$>
<mt:SearchConditionCategorySection>
<$mt:SearchConditionCategory category="シャツ"$>
</mt:SearchConditionCategorySection>
<mt:SearchConditionTagSection>
<$mt:SearchConditionTag tag="Vネック"$>
</mt:SearchConditionTagSection>
<mt:SearchConditionCFSection field="entry_recommend">
<$mt:SearchConditionCFNotValues values="1"$>
</mt:SearchConditionCFSection>
<mt:SearchConditionCFSection field="entry_size">
<$mt:SearchConditionCFLike values="S,M"$>
</mt:SearchConditionCFSection>
<mt:SearchConditionCFSection field="entry_price">
<$mt:SearchConditionCFCompare ge="1000" lt="2000"$>
</mt:SearchConditionCFSection>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
<ul>
<mt:Entries>
<li>
<$mt:EntryTitle$>
(<mt:EntryCategories glue=","><$mt:CategoryLabel$></mt:EntryCategories>)
(<mt:EntryTags glue=","><$mt:TagName$></mt:EntryTags>)
(<$mt:EntryRecommend$>)
(<$mt:EntryIntData$>)
(<$mt:EntrySize$>)
</li>
</mt:Entries>
</ul>
</mt:IfNonZero>