「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
ブログ記事詳細検索プラグイン(その9・カスタムフィールドでの検索の基本)
SearchEntriesプラグインでは、カスタムフィールドでの検索を行うこともできます。
1.MTSearchConditionCFSectionタグ
カスタムフィールドで検索するには、フィールドごとに「MTSearchConditionCFSection」というタグのブロックを作り、そのブロックの中に条件を指定するタグを書きます。
<mt:SearchConditions> <mt:SearchConditionCFSection field="カスタムフィールドのベースネーム"> カスタムフィールドの検索条件を指定するタグ </mt:SearchConditionCFSection> </mt:SearchConditions>
fieldモディファイアで、検索対象のカスタムフィールドのベースネームを指定します。
ベースネームは、カスタムフィールドの作成の際に、「ベースネーム」の欄に設定した値です。
2.検索条件を指定するテンプレートタグ
カスタムフィールドでの検索条件は、以下のテンプレートタグで指定します。
いずれのテンプレートタグも、ブログ記事のフィールドを検索する場合と書き方は同じです。
ただし、テンプレートタグ名に「CF」が入っていることと、fieldモディファイアを指定しない点が異なります。
条件 | テンプレートタグ |
---|---|
値が○○に等しい | <$mt:SearchConditionCFValues values="値1","値2",・・・,"値n"$> |
値に○○を含む | <$mt:SearchConditionCFLike values="値"$> |
値が○○より大きい等 | <$mt:SearchConditionCFCompare 演算子="値"$> |
値が○○以上□□以下等 | <$mt:SearchConditionCFCompare 演算子1="値1" 演算子2="値2"$> |
ただし、MTSearchConditionCFCompareタグで値を数値として比較できるようにしたい場合は、拙作のNumericCustomFieldsプラグインをインストールして、数値型のカスタムフィールドに値を入力しておく必要があります。
Movable Type標準のカスタムフィールドの型では、値は文字列として扱われますので、数値としての比較が正しく行われません。
3.検索の事例
ブログ記事に商品のデータを入力することを想定して、以下の表のようにカスタムフィールドを定義しているとします。
また、値も入力しているものとします。
カスタムフィールド | カスタムフィールドの種類 | ベースネーム | テンプレートタグ |
---|---|---|---|
値段 | 整数 | entry_price | MTEntryPrice |
サイズ | テキスト | entry_size | MTEntrySize |
おすすめ | チェックボックス | entry_recommend | MTEntryRecommend |
値段は、拙作のNumericCustomFieldsプラグインを使って、整数の値で入力してあるものとします。
また、サイズには「S,M,L」など、複数のサイズをコンマで区切って入力してあるものとします。
3-1.おすすめ商品を検索
お勧め商品(「おすすめ」のチェックボックスがオンになっている)商品を検索する場合、MTSearchConditionCFValuesタグを使って、「entry_recommendカスタムフィールドの値が1になっている」という条件で検索します。
<mt:SearchConditions> <mt:SearchConditionCFSection field="entry_recommend"> <$mt:SearchConditionCFValues values="1"$> </mt:SearchConditionCFSection> </mt:SearchConditions> <mt:IfNonZero tag="SearchLoadedEntryCount"> <ul> <mt:Entries> <li><$mt:EntryTitle$>(<$mt:EntryRecommend$>)</li> </mt:Entries> </ul> </mt:IfNonZero>
3-2.SかMのサイズがある商品を検索
SかMのサイズがある商品を検索するには、MTSearchConditionsCFLikeタグを使って、「entry_sizeフィールドの値にSかMを含む」という条件で検索します。
<mt:SearchConditions> <mt:SearchConditionCFSection field="entry_size"> <$mt:SearchConditionCFLike values="S,M"$> </mt:SearchConditionCFSection> </mt:SearchConditions> <mt:IfNonZero tag="SearchLoadedEntryCount"> <ul> <mt:Entries> <li><$mt:EntryTitle$>(<$mt:EntrySize$>)</li> </mt:Entries> </ul> </mt:IfNonZero>
3-3.1,000円以上2,000円未満の商品を検索
1,000円以上2,000円未満の商品を検索するには、MTSearchConditionsCFCompareタグを使って、「entry_priceフィールドの値が1,000以上2,000未満」という条件で検索します。
<mt:SearchConditions> <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:EntryPrice$>)</li> </mt:Entries> </ul> </mt:IfNonZero>
4.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プラグイン不具合修正