すっさんぽ
  1. Posts/

WordPressのRSSフィードをカスタマイズする方法

·

WordPressは、RSSフィードを生成する機能がデフォルトで付いていますが、RSSの構造をカスタマイズする場合は、プラグインを導入したり独自で実装したりする必要があります。今回は、RSSの構造を独自でカスタマイズする方法をまとめます。

参考にするサイト #

作業の前に…… #

本当にRSSの構造の変更が必要なのか、実装が必要なのかを改めて考えておきたいものです。 カテゴリやタグを絞り込みたいだけなら、フィードのURLで対応できるので、そちらを利用しましょう。

特定のカテゴリ(例: article)を流す場合は、以下のURLになります。

example.com/category/article/feed

パーマリンク設定などによって、リダイレクトされる場合もあります。

(参考にしたサイト)
https://www.feedotter.com/blog/wordpress-rss-feeds-for-categories-and-tags/

RSS構造を独自で変更する #

作業自体はさほど難しいものではありません。 ですが、本番環境で作業する場合は事前にファイルをバックアップをしたり、サーバで直接編集するのではなくPHPに対応したエディタを利用するなどして、サイトが落ちないように対策した上で作業したほうが良いです。 また、テーマ本体の更新に備えて、なるべく子テーマを編集しましょう。

functions.phpに、フィードのフックを追加する #

まず、functions.phpに、フィードのフックを追加します。

function custom_rss_feed_action() {
	add_feed('custom', 'custom_rss_feed');
}
add_action('init', 'custom_rss_feed_action');

function custom_rss_feed() {
	get_template_part('rss', 'customized');
}
add_action
第1引数で指定するフックが発生した際に、第2引数で指定する関数を呼び出します。今回は、initcustom_rss_feed_action()を呼ぶように指定しました。 一応ドキュメントがありますが、リストになっていないのでいまいち読みにくいです。Codex日本語版とか、このへんがわかりやすい感じです。
add_feed
第1引数で指定したフィード名で、第2引数で指定する関数を呼び出します。今回は、custom_rss_feed()を呼ぶようにしました。
get_template_part
これはおなじみのテンプレート読み込みの関数です。rss-customizedのリソースを読み込みます。

カスタマイズしたRSSのテンプレートを作成する #

先程 functions.phpで、get_template_part('rss', 'customized');のように読み込むテンプレートを指定したので、そのファイルを作成します。

  1. /wp-includeのディレクトリに、feed-rss2.phpなどのベーステンプレートがあるので、それをコピーしてきます。
  2. コピーしたファイルをリネームします。 rss-customized.phpに変更します。
  3. テンプレートの構造を変更します。
    1. 通常のテーマ編集と同じ作業です。RSS用の関数がいくつか用意されているので、調べてみると便利そうです
  4. 変更したファイルを、/wp-content/themes/使っているテーマ/rss-customized.phpに置きます。

これで、テンプレートの配置は完了!

アクセスしてみる #

functions.phpadd_feed('custom', 'custom_rss_feed');と指定したので、ブラウザで/feed/customにアクセスしてみましょう。これで、カスタムしたフィードが表示されているはずです!

作業はこれで以上です。 WordPressはRSSフィードの生成にデフォルトで対応しておりますが、それでは都合が悪い場合がごく稀に発生します。とはいえ、RSSなど規格が決まっているものは、なるべく標準に則りたいものですね。