「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
SearchEntriesプラグインをリスト系アーカイブテンプレートで使う際の注意点
SearchEntriesプラグインのテンプレートタグを、カテゴリアーカイブなどのリスト系アーカイブテンプレートで使う場合、注意する点があります。
1.問題が起こる場合
リスト系のアーカイブテンプレートでは、テンプレートの再構築に入る前に、そのアーカイブに必要な記事が先に読み込まれるようになっています。
一方、SearchEntriesプラグインでは、MTEntriesタグの処理を流用するために、「アーカイブに必要な記事」の情報を上書きする処理を行っています。
そのため、リスト系アーカイブテンプレートの中で、SearchEntriesプラグインによる検索を行い、その後にMTEntriesタグでアーカイブ本来の記事を出力しようとすると、正しく出力されないという問題が起こります。
2.解決方法
SearchEntriesプラグインには、上記のような状況を想定して、「MTBackupEntries」と「MTRestoreEntries」というタグが入っています。
以下のように、検索(MTSearchConditionsタグのブロック)の前にMTBackupEntriesタグを入れ、検索結果を出力し終わった後でMTRestoreEntriesタグを実行すると、アーカイブ本来の記事を正しく出力することができます。
<$mt:BackupEntries> <mt:SearchConditions> 検索条件 </mt:SearchConditions> <mt:IfNonZero tag="SearchLoadedEntryCount"> 検索結果を出力する部分 </mt:IfNonZero> <$mt:RestoreEntries$> <mt:Entries> アーカイブ本来の記事を出力する部分 </mt:Entries>