WordPressが標準で出力するフィード
WordPressがデフォルトで出力する(管理画面から操作可能な)フィードは4つですかね。
http://example.com/?feed=rss
http://example.com/?feed=rss2
http://example.com/?feed=rdf
http://example.com/?feed=atom
カスタムパーマリンク設定していたら、
http://example.com/feed/
http://example.com/feed/rss/
http://example.com/feed/rss2/
http://example.com/feed/rdf/
http://example.com/feed/atom/
feed/はデフォルトに設定してあるフィードを呼びます。特に指定した覚えがなければrss2になるみたいですね。
メディアサイトを作成したときに、キュレーションサイトと連携したいという要望が最近非常に多いです。
ただ、連携方法は簡単で、そのキュレーションサイト用のフィードを作成するだけなんですね。
というわけで、オリジナルのフィードの作成方法です。
URLの作成
カスタムパーマリンクを利用しない場合
http://example.com/?feed=rss
http://example.com/?feed=rss2
http://example.com/?feed=rdf
http://example.com/?feed=atom
標準のこれらに加えて、
http://example.com/?feed=original
を作成します。
カスタムパーマリンクを利用する場合
http://example.com/feed/
http://example.com/feed/rss/
http://example.com/feed/rss2/
http://example.com/feed/rdf/
http://example.com/feed/atom/
これらに加えて、
http://example.com/feed/original/
を作成します。
試しにアクセスしてみると、こんなエラーが出るかと思います。
WordPress が何らかして、テンプレートを探したけれど、失敗しちゃったって感じですね。
では、WordPress が何をやろうとしたのか、見てみましょう。
WordPress が何をやろうとしたのか?
だいたいのイメージですが、URLにfeedキーワードが与えられたら、WordPress はフィードを出力する処理を始めようとします。
そこで呼び出されるのが、do_feed 関数です。
下記は、do_feed 関数の一部抜粋です。
$feed = get_query_var( 'feed' );
// Remove the pad, if present.
$feed = preg_replace( '/^_+/', '', $feed );
if ( $feed == '' || $feed == 'feed' )
$feed = get_default_feed();
$hook = 'do_feed_' . $feed;
if ( ! has_action( $hook ) )
wp_die( __( 'ERROR: This is not a valid feed template.' ), '', array( 'response' => 404 ) );
$wp_query の、feed の値に応じて処理を振り分けようとします。
今回の想定では、feed には、original が格納されていることになりますね。
do_feed_original
そして、というフックを実行しようと試みます。
先ほど試した場合ですと、このフックが設定されていなかったがために、テンプレートが見つからない旨のエラーが表示された訳ですね。
つまり、このフックを作成すれば、いくらでもオリジナルフィードが作れそうです。
オリジナルフィードのテンプレートを設定する
functions.php などで、do_feed_original フックを設定します。
具体的にはこんな感じです。
add_action( 'do_feed_original', 'do_feed_original' );
function do_feed_original() {
$feed_template = get_template_directory() . '/feeds/original.php';
load_template( $feed_template );
}
テーマファイル内の、feeds ディレクトリ以下同名のファイルをテンプレートとして読み込みませます。
このテンプレートは、デフォルトのテンプレートが、wp-includes/feed-*.php に、それぞれありますので、最も近いものをコピーし、作成すると簡単です。
あとは、目的にあわせて、テンプレートを調整すればいいだけですね。
これで、簡単にオリジナルフィードを作成することができそうです。