独自のフィードで複数ブログのRSSを出力する
今回はソースコードの掲載はありません。
仕事の関係で、マルチブログを複数経由して、ごちゃまぜの記事を取得したいと思った。
そこで、wp-includeの中のRSSテンプレやfunctions.phpをいじったわけであるが、これがどうにもうまくいかない。
検証したこととしては以下2つ。
- マルチブログ用のフィードテンプレを作成したうえで、functions.phpでadd_action()を使用してdo_feed()の動作にフックして、その独自のRSSを出してくる
- RSSテンプレート自体を通常フィードとごちゃまぜフィードをブログIDで判定して別々に出力させようとする
2つともうまくいかないんスけど。
add_action()すりゃサーバーエラーでぶっち。
functionsに独自関数書き込んでみりゃ、echoのテスト出力でさえもRSSテンプレ側で何故かうまいこと呼び出せない。ぶっち。
俺の怒りのボルテージもぶっち。
・・・まぁそんなことやっても仕方ないので、代替案として考えた。
要はフィードなんざ元を正せばXML。
必要最小限のノードとXML自体をテキスト形式で書き出せばオールOK。
そこで、以下の方法を試してみた。
- 固定ページにフィード用の空ページを作成する。スラッグもきちんと設定。
- テーマのテンプレートに「page-[1で作った空ページスラッグ]」を追加。
- 2のテンプレートへ表示したいRSSの書式を丸コピ。
- itemノードのループを弄る。ここで以前に掲載したマルチブログの記事をごっちゃで取得する関数をfunctionsから呼び出して使用。
- contentやauthorなどの出力箇所のノードにCDATAを書き加える。
- 1の固定ページヘアクセス。
まさにドンピシャ。
固定ページがあら不思議。マルチブログ対応のフィードテンプレートに早変わり。
どうしようもないことが、別の方法で実現できるってWPは本当によく出来てる。
フィードそのもののテンプレートはどうしようもなくババ色ですがね。