拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
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>
