「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
ブログ記事詳細検索プラグイン(その2・「ブログ記事のフィールドの値が○○に等しい」場合の検索)
SearchEntriesプラグインでは、検索条件を柔軟に指定することができます。
その第一歩として、今日は「ブログ記事のフィールドの値が○○に等しい」という条件で検索する方法を解説します。
1.SearchConditionsタグと検索条件
SearchEntriesプラグインでは、「SearchConditions」というブロックタグの中に、検索の条件を書いていきます。
そして、検索されたブログ記事は、MTEntriesタグで出力します。
ただし、検索にヒットする記事が全くないと、MTEntriesタグが通常の動作(MTSearchConditionsタグがない時と同じ動作)をしてしまいます。
そこで、MTEntriesタグを「<mt:IfNonZero tag="SearchLoadedEntryCount">」と「</mt:IfNonZero>」のタグのブロックで囲み、検索にヒットする記事があるときだけ、検索結果を出力をするようにします。
ここまでの話をまとめると、基本的なタグの組み方は、以下のようになります。
<mt:SearchConditions> 検索条件を指定するタグ </mt:SearchConditions> <mt:IfNonZero tag="SearchLoadedEntryCount"> <mt:Entries> 検索された個々のブログ記事を出力するタグ等 </mt:Entries> </mt:IfNonZero>
2.MTSearchConditionValuesタグ
「フィールドの値が○○に等しい」という条件で検索するには、「MTSearchConditionValues」というタグを使います。
MTSearchConditionValuesタグの書き方は、以下のようになります。
<$mt:SearchConditionValues field="フィールド名" values="値1","値2"・・・$>
fieldモディファイアの「フィールド名」には、ブログ記事のフィールドを表す値を、以下の表から指定します。
フィールド | フィールド名 |
---|---|
ID | id |
タイトル | title |
本文 | text |
続き | text_more |
概要 | excerpt |
キーワード | keywords |
公開日 | authored_on |
最終更新日 | modified_on |
出力ファイル名 | basename |
ユーザーのID | author_id |
フォーマット | convert_breaks |
コメント数 | comment_count |
トラックバック数 | ping_count |
また、valuesモディファイアには、比較対象の値を指定します。
「values="値"」のように、値を1つだけ書くと、フィールドがその値に等しいブログ記事が検索されます。
また、「values="値1","値2",・・・」のように値を複数書くと、フィールドが値1、値2・・・のどれかに等しいブログ記事が検索されます。
なお、値に「0」を指定することはできません(MT内部のロジックの仕様であるようです)。
ただし、数値のフィールドであれば、後日紹介するMTSearchConditionCompareというタグで、値が「0」のフィールドも検索することができます。
3.複数のフィールドで検索
MTSearchConditionsタグのブロックの中にMTSearchConditionValuesタグを複数回書くと、複数のフィールドを組み合わせた検索を行うこともできます。
4.事例
事例をいくつかあげておきます。
4-1.IDが1番のユーザーが書いたブログ記事を検索する
ユーザーのIDで検索するには、「author_id」フィールドを検索条件に指定します。
<mt:SearchConditions> <$mt:SearchConditionValues field="author_id" values="1"$> </mt:SearchConditions> <mt:IfNonZero tag="SearchLoadedEntryCount"> <ul> <mt:Entries> <li><$mt:EntryTitle$>, <$mt:EntryAuthorID$></li> </mt:Entries> </ul> </mt:IfNonZero>
4-2.コメントが1~3件ついているブログ記事を検索する
コメント数で検索するには、「comment_count」フィールドを検索条件に指定します。
また、「コメントが1~3件」という条件なので、valuesモディファイアを「values="1","2","3"」と書きます。
<mt:SearchConditions> <$mt:SearchConditionValues field="comment_count" values="1","2","3"$> </mt:SearchConditions> <mt:IfNonZero tag="SearchLoadedEntryCount"> <ul> <mt:Entries> <li><$mt:EntryTitle$>, <$mt:EntryCommentCount$></li> </mt:Entries> </ul> </mt:IfNonZero>
4-3.IDが1番のユーザーが書いていて、かつコメントが1~3件ついているブログ記事を検索する
MTSearchConditionsタグのブロックの中に、MTSearchConditionValuesタグを2回書き、「author_idフィールドの値が1」と、「comment_countフィールドの値が1、2、3のどれか」の2つの条件を指定します。
<mt:SearchConditions> <$mt:SearchConditionValues field="author_id" values="1"$> <$mt:SearchConditionValues field="comment_count" values="1","2","3"$> </mt:SearchConditions> <mt:IfNonZero tag="SearchLoadedEntryCount"> <ul> <mt:Entries> <li><$mt:EntryTitle$>, <$mt:EntryAuthorID$>, <$mt:EntryCommentCount$></li> </mt:Entries> </ul> </mt:IfNonZero>
5.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プラグイン不具合修正