[WordPress] Quick Cacheがカスタマイズしたfeed(RSS)をキャッシュしない

  • 21 8月, 2013

WordPress3.x系Quick Cacheを使っていました。feedは速報性を維持したいのでキャッシュ対象外にしていたのですが、とある事情でキャッシュさせることになりました。

しかしキャッシュ対象外リストから削除しても、キャッシュされません。feedレスポンスの末尾を見てもキャッシュの刻印がなく、cacheディレクトリにもファイルが作成されませんでした。(もちろんログインしていないですよw)

原因は下記のように独自のfeed用テンプレートファイルを使っていたことでした。

<br />remove_filter('do_feed_rss2', 'do_feed_rss2', 10);<br />function do_feed_rss2_original(){<br /><%%KEEPWHITESPACE%%>    $template = '/feed-rss2-original.php';<br /><%%KEEPWHITESPACE%%>    load_template(get_template_directory().$template);<br />}<br />add_action('do_feed_rss2', 'do_feed_rss2_original', 10);<br />

/wp/wp-includes/にあるfeed-rss2.phpを直接修正してしまうと、WordPressをバージョンアップする際、元に戻ってしまうので、よく紹介されるやり方で変更していました。ですが、このやり方だとQuick  Cacheがキャッシュしてくれませんでした。。。残念orz

/feed/へのリクエストで、あるパラメータが指定されたときは独自フォーマットに変える必要があったので、feed-rss2.phpの修正は必須。しかしコアファイルへの修正は認められない。なんとも板ばさみな状況になってしまいました。

苦手なフィルターやフックを使えば何とかなると思うので、色々試したいと思います。

出来たらそれをアップします。

2013/9/10更新

上記オリジナルfeedテンプレートの中で、

オリジナルへのアクセスをあらわすパラメータを受け取った後は、

デフォルトのアクションを削除することで何とか実現できました。

<br />if("もしオリジナルfeedの場合"){<br /><%%KEEPWHITESPACE%%>    remove_action('do_feed_rss2', 'do_feed_rss2', 10);<br /><%%KEEPWHITESPACE%%>    /*以下、オリジナル処理*/<br />}<br />

これでオリジナル処理を実行した後、デフォルトの処理が呼ばれずに済みました。
ちょっとセンスが無い感じがしましたが、取り急ぎ。


関連ワード: ,

Comments are closed.