「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
ブログ記事詳細検索プラグイン(その12・ブログ記事の並べ替え)
SearchEntriesプラグインでは、検索されたブログ記事を、ブログ記事標準のフィールドの値か、カスタムフィールドの値で並べ替えることができます。
1.ブログ記事のフィールドで並べ替える
並べ替え方法は、「MTSearchSortOrder」というテンプレートタグで指定します。
MTSearchSortOrderタグは、MTSearchConditionsタグのブロックの中に書きます。
ブログ記事のフィールドの値をキーにして昇順で並べ替えるには、以下のように書きます。
<$mt:SearchSortOrder sort_by="フィールド名"$>
「フィールド名」には、ブログ記事標準のフィールドの名前を、以下の表から選んで指定します。
フィールド | フィールド名 |
---|---|
ID | id |
タイトル | title |
本文 | text |
続き | text_more |
概要 | excerpt |
キーワード | keywords |
公開日 | authored_on |
最終更新日 | modified_on |
出力ファイル名 | basename |
ユーザーのID | author_id |
フォーマット | convert_breaks |
コメント数 | comment_count |
トラックバック数 | ping_count |
また、降順で並べ替える場合は、以下のように「sort_order="descend"」のモディファイアも付加します。
<$mt:SearchSortOrder sort_by="フィールド名" sort_order="descend"$>
例えば、タイトルに「Movable Type」を含み、かつコメントが付いている(comment_countフィールドの値が1以上)ブログ記事を検索し、コメント数の多い順に出力するには、以下のようにテンプレートを組みます。
<mt:SearchConditions> <$mt:SearchConditionLike field="title" values="Movable Type"$> <$mt:SearchConditionCompare field="comment_count" ge="1"$> <$mt:SearchSortOrder sort_by="comment_count" sort_order="descend"$> </mt:SearchConditions> <mt:IfNonZero tag="SearchLoadedEntryCount"> <ul> <mt:Entries> <li><$mt:EntryTitle$>(<$mt:EntryCommentCount$>)</li> </mt:Entries> </ul> </mt:IfNonZero>
2.カスタムフィールドの値で並べ替える
カスタムフィールドの値をキーにして並べ替える場合は、MTSearchSortOrderタグのsort_byモディファイアを、「sort_by="field:ベースネーム"」のように書きます。
例えば、ブログ記事で商品を管理するために、値段を表すカスタムフィールドを追加しているとします。
そして、そのカスタムフィールドのベースネームが「entry_price」で、テンプレートタグ名が「MTEntryPrice」だとします。
この状態で、値段が3,000円以下の商品(ブログ記事)を、値段の安い順に並べ替えて出力するには、以下のようにテンプレートを組みます。
<mt:SearchConditions> <mt:SearchConditionCFSection field="entry_price"> <$mt:SearchConditionCFCompare le="3000"$> </mt:SearchConditionCFSection> <$mt:SearchSortOrder sort_by="field:entry_price"$> </mt:SearchConditions> <mt:IfNonZero tag="SearchLoadedEntryCount"> <ul> <mt:Entries> <li><$mt:EntryTitle$>(<$mt:EntryPrice$>)</li> </mt:Entries> </ul> </mt:IfNonZero>
また、値段の高い順に並べ替えて出力する場合、上のテンプレートのMTSearchSortOrderタグに「sort_order="descend"」のモディファイアを追加します。
3.複数のフィールドで並べ替える
複数のフィールドをキーにして、ブログ記事を並べ替えることもできます。
その場合は、MTSearchSortOrderタグを複数回書きます。
最優先する並べ替えのキーを、1つ目のMTSearchSortOrderタグに書きます。
次に優先するキーを、2つ目のMTSearchSortOrderタグに書きます。
以下同様に、複数のMTSearchSortOrderタグを書きます。
例えば、先ほどの「値段が3,000円以下」の例で、以下のように並べ替えたいとします。
- 値段の安い順に並べ替えます。
- 同じ値段の商品が複数ある場合は、タイトルの順に並べ替えます。
この場合は、MTSearchSortOrderタグを2回書きます。
まず値段で並べ替えるので、1つ目のMTSearchSortOrderタグで、値段で並べ替えるように指定します。
そして、2つ目のMTSearchSortOrderタグで、タイトルで並べ替えるように指定します。
実際にMTSearchConditionsタグのブロックを書くと、以下のようになります。
<mt:SearchConditions> <mt:SearchConditionCFSection field="entry_price"> <$mt:SearchConditionCFCompare le="3000"$> </mt:SearchConditionCFSection> <$mt:SearchSortOrder sort_by="field:entry_price"$> <$mt:SearchSortOrder sort_by="title"$> </mt:SearchConditions>
MTSearchSortOrderタグを複数回書く場合、それぞれに異なるsort_orderモディファイアを指定することもできます。
例えば、前述の例で、商品を値段の高い順(降順)に並べ替え、値段が同じ商品はタイトル順(昇順)に並べ替える場合だと、MTSearchConditionsタグのブロックを以下のように書きます。
<mt:SearchConditions> <mt:SearchConditionCFSection field="entry_price"> <$mt:SearchConditionCFCompare le="3000"$> </mt:SearchConditionCFSection> <$mt:SearchSortOrder sort_by="field:entry_price" sort_order="descend"$> <$mt:SearchSortOrder sort_by="title"$> </mt:SearchConditions>
4.並べ替え方法を指定しなかった場合
MTSearchSortOrderタグを入れなかった場合、ブログの「設定」→「投稿」のページの「順番」の設定に応じて、公開日時の昇順または降順でブログ記事を並べ替えます。
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プラグイン不具合修正