「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
ブログ記事詳細検索プラグイン(その31・検索結果のページ分割/PHPによるキャッシュ)
SearchEntriesプラグインでは、フォームを使って動的に検索する際にも、検索結果のページをキャッシュすることができます。
その方法を解説します。
1.検索フォーム側
検索フォーム側では、キャッシュを使わない場合と比べて、以下の2点を変更します。
- フォームの送信先のアドレス(form要素のaction属性)を、MTRealtimeRebuildPHPPathタグで表して、PHPによる処理を行うよにします。
- 複数選択のselectや、name属性が同じチェックボックスを複数使いたい場合、それらのname属性には、「○○○[]」のように「[]」を付けます。
例えば、カテゴリをチェックボックスで選んで検索する場合だと、検索フォームは以下のように組みます。
1行目のform要素で、action属性を<$mt:RealtimeRebuildPHPPath$>のタグで表し、PHPによる処理を行うようにしています。
また、12行目のinput要素で、name属性を「cat[]」にして、「cat」の後に「[]」を付けています。
<form method="get" action="<$mt:RealtimeRebuildPHPPath$>"> <input type="hidden" name="blog_id" value="<$mt:BlogID$>" /> <input type="hidden" name="tmpl_id" value="<$mt:GetTemplateID tmpl_name="詳細検索結果"$>" /> <input type="hidden" name="first_time" value="1" /> <div> <label for="cat">カテゴリ</label> <div id="cattree_div"> <mt:SortedTopLevelCategories> <mt:SubCatIsFirst> <ul class="cattree"> </mt:SubCatIsFirst> <li><input type="checkbox" name="cat[]" value="<$mt:CategoryLabel$>" /><$mt:CategoryLabel><br /> <$mt:SubCatsRecurse$> </li> <mt:SubCatIsLast> </ul> </mt:SubCatIsLast> </mt:SortedTopLevelCategories> </div> </div> <p> <input type="submit" value="送信" /> </p> </form>
なお、このフォームを含むテンプレートの例は、以下のリンクからダウンロードすることができます。
検索結果をページ分割してキャッシュする場合の検索フォームテンプレートの例
2.ページ移動リンクの出力
一方、検索結果のテンプレートでは、ページ移動リンクを出力する部分を書き換えます。
キャッシュしない場合、ページ移動リンク出力部分で、移動先のアドレスを求めるために、以下のようなMTSetVarBlockタグを使っていました。
<mt:SetVarBlock name="pager_link"$><$mt:DivPagesCGILink tmpl_name="テンプレート名" build_params="1" name="検索フォームの各要素のname属性"$>&page=</mt:SetVarBlock>
この行の中で、以下の3箇所を書き換えます。
- MTDivPagesCGILinkタグをMTDivPagesPHPLinkタグに置き換えます。
- 「php="1"」のモディファイアを追加します。
- 「expire_modified="1"」のモディファイアを追加します。
<mt:SetVarBlock name="pager_link"$><$mt:DivPagesPHPLink tmpl_name="テンプレート名" build_params="1" name="検索フォームの各要素のname属性" php="1" expire_modified="1"$>&page=</mt:SetVarBlock>
なお、このページ移動部分を含む検索結果テンプレートの例は、以下のリンクからダウンロードすることができます。
検索結果をページ分割してキャッシュする場合の検索フォームテンプレートの例
3.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プラグイン不具合修正