CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

WordPressで投稿した記事をRSSフィードで配信することができます。
例えばこのブログだと以下のリンクからフィードを取得することができます。
http://cms.helog.jp/feed/

このフィードのテンプレートを修正しようと思ったのですが、なんとWordpressはデフォルトでフィードのテンプレートが存在しません。

例えばRSS2をフォーマットを編集する場合、直接インクルードファイルを編集すればカスタマイズは可能のようです。

.../wp-include/feed-rss2.php

しかし、アップデートの際の影響も考慮して、ここではなるべくテンプレート内でカスタマイズを完結したいので、以下のサイトを参考にフィードをテンプレート化します。

各種フィード用テンプレートの変更 : dogmap.jp

テンプレートファイルを用意する

まず、ベースとして先ほどのファイルを、現在使用中のテンプレートフォルダにコピーします。

.../wp-include/feed-rss2.php

上記ファイルを以下のフォルダにコピーします。

.../wp-content/themes/(現在使用中のテンプレートフォルダ)/feed-rss2.php

コピーしたファイルを目的に応じて自由にカスタマイズします。
今回はフィードテンプレートの中身については割愛します。

テンプレートのフィードを参照するようにアクションを用意する

テンプレート内「functions.php」に以下のように記述します。

remove_filter('do_feed_rss2', 'do_feed_rss2', 10);
function custom_feed_rss2(){
	$template_file = '/feed-rss2.php';
	load_template(get_template_directory() . $template_file);
}
add_action('do_feed_rss2', 'custom_feed_rss2', 10);

はじめに「remove_filter」でデフォルトのフィルタを削除します。
「add_action」でアクション関数「custom_feed_rss2」を登録することで、テンプレートの参照先を上書きするイメージです。
アクション関数内の処理では「load_template」でテンプレートの参照先をセットしているだけです。

参考サイトにあるように「RDF」や「ATOM」など他のフォーマットのフィードも、テンプレート化してカスタマイズすることができます。

フィードをカスタマイズすることなどほとんどないと思いますが、いざというときには有効な方法です。

このエントリーをはてなブックマークに追加

Monthly Archives

Search