拙著「FXはチャートで勝つ!」が発売されました。
FX(外国為替証拠金取引)でのチャートの読み方を解説しています。
自由国民社刊で、定価1,728円(消費税込み)です。
SearchEntriesプラグインでMore Custom FieldsプラグインのCheckbox Groupを検索する(静的編)
Dan Wolfgang氏が作ったMore Custom Fieldsプラグインを使うと、複数のチェックボックスを組み合わせたカスタムフィールド(Checkbox Group)などを追加することができます。
このプラグインで追加したカスタムフィールドを、SearchEntriesプラグインで検索したいという要望がありましたので、その方法を紹介します。
今日は、Checkbox Groupのカスタムフィールドを静的に検索する方法を紹介します。
1.Checkbox Groupでデータベースに保存される値
Checkbox Groupのカスタムフィールドを作ってデータを入力すると、オンになっているチェックボックスの値をカンマで区切って連結した値が、データベースに保存されます。
例えば、以下の画面のように、赤/青/黄/緑の4つのチェックボックスを作って、赤と黄のチェックをオンにして保存したとします。
この場合、データベースには、このカスタムフィールドの値として「赤, 黄」が保存されます。
2.チェックボックスがオンになっている記事を検索する
SearchEntriesプラグインを使えば、Checkbox Groupの中で、特定のチェックボックスがオンになっている記事を検索することができます。
前述したように、チェックボックスをオンにすると、そのチェックボックスの値を含んだ文字列が、データベースに保存されます。
したがって、MTSearchConditionCFLikeタグを使って、「○○を含む」の条件で検索するようにします。
例えば、前述の4色のチェックボックスの例で、「赤」のチェックボックスがオンになっている記事を検索したいとします。
また、このカスタムフィールドのベースネームが「chkgrp」だとします。
この場合、MTSearchConditionsタグのブロックを以下のように書きます。
<mt:SearchConditions> <mt:SearchConditionCFSection field="chkgrp"> <$mt:SearchConditionCFLike values="赤"$> </mt:SearchConditionCFSection> </mt:SearchConditions>
3.複数のチェックボックスがオンになっている記事を検索する
複数のチェックボックスがオンになっている記事を検索することもできます。
OR検索を行いたい場合は、MTSearchConditionCFLikeタグのfieldモディファイアに、個々のチェックボックスの値をコンマで区切った文字列を指定します。
例えば、「赤」か「青」のチェックボックスがオンになっている記事を検索したい場合は、以下のように書きます。
<mt:SearchConditions> <mt:SearchConditionCFSection field="chkgrp"> <$mt:SearchConditionCFLike values="赤,青"$> </mt:SearchConditionCFSection> </mt:SearchConditions>
また、AND検索を行いたい場合は、チェックボックスの値毎に、MTSearchConditionCFLikeタグの行を書きます。
例えば、「赤」と「青」の両方のチェックボックスがオンになっている記事を検索したい場合は、以下のように書きます。
<mt:SearchConditions> <mt:SearchConditionCFSection field="chkgrp"> <$mt:SearchConditionCFLike values="赤"$> <$mt:SearchConditionCFLike values="青"$> </mt:SearchConditionCFSection> </mt:SearchConditions>
4.複雑な検索が必要な場合もある
たいていの場合は、上記の方法で検索を行うことができます。
ただ、あるチェックボックスの値に、他のチェックボックスの値が丸々含まれている場合は、上記の方法では正しく検索できません。
例えば、前述の色の例で、「黄緑」のチェックボックスを追加したとします。
この場合、「黄」は「黄緑」に含まれますので、「あるチェックボックスの値に、他のチェックボックスの値が丸々含まれている場合」に該当します。
ここで、以下のようにして、「黄」のチェックボックスがオンになっている記事を検索しようとしたとします。
<mt:SearchConditions> <mt:SearchConditionCFSection field="chkgrp"> <$mt:SearchConditionCFLike values="黄"$> </mt:SearchConditionCFSection> </mt:SearchConditions>
ところが、この書き方だと、「カスタムフィールドの値に『黄』を含む」という条件を指定したことになります。
そのため、「黄」のチェックボックスがオンの記事だけでなく、「黄緑」のチェックボックスがオンの記事も検索されてしまいます。
上記のような例で正しく検索を行うには、「『黄』は含まれるが、『黄緑』は含まれない」という条件を指定する必要があります。
具体的には、以下のような書き方をします。
<mt:SearchConditions> <mt:SearchConditionCFSection field="chkgrp"> <$mt:SearchConditionCFLike values="黄 AND NOT 黄緑"$> </mt:SearchConditionCFSection> </mt:SearchConditions>
静的な検索なら、上記のような対応をやりやすいです。
ただ、フォームを使った動的な検索だと、検索条件の作り方が難しくなってしまいます。
基本的には、「あるチェックボックスの値に、他のチェックボックスの値が丸々含まれる」ということがないように、チェックボックスの作り方を工夫していただいた方が良いです。
例えば、ここまでで取り上げた色のチェックボックスの場合だと、各チェックボックスの値を「01赤」「02青」「03黄」「04緑」「05黄緑」のようにして、連番を振るようにします。
こうすれば、「あるチェックボックスの値に、他のチェックボックスの値が丸々含まれる」という状況ではなくなります(「05黄緑」には「03黄」は含まれない)。
また、検索のテンプレートでも、以下のように連番をつけた値で検索するようにします。
<mt:SearchConditions> <mt:SearchConditionCFSection field="chkgrp"> <$mt:SearchConditionCFLike values="03黄"$> </mt:SearchConditionCFSection> </mt:SearchConditions>
5.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プラグイン不具合修正