WordPressのRSSフィードをカスタマイズする方法
Table of Contents
WordPressは、RSSフィードを生成する機能がデフォルトで付いていますが、RSSの構造をカスタマイズする場合は、プラグインを導入したり独自で実装したりする必要があります。今回は、RSSの構造を独自でカスタマイズする方法をまとめます。
参考にするサイト #
- https://themeisle.com/blog/custom-rss-feed-wordpress/
- おおむねこのサイトにあった内容をメインに作業しました
作業の前に…… #
本当に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引数で指定する関数を呼び出します。今回は、
init
でcustom_rss_feed_action()
を呼ぶように指定しました。 一応ドキュメントがありますが、リストになっていないのでいまいち読みにくいです。Codex日本語版とか、このへんがわかりやすい感じです。 - add_feed
- 第1引数で指定したフィード名で、第2引数で指定する関数を呼び出します。今回は、
custom_rss_feed()
を呼ぶようにしました。 - get_template_part
- これはおなじみのテンプレート読み込みの関数です。
rss-customized
のリソースを読み込みます。
カスタマイズしたRSSのテンプレートを作成する #
先程 functions.php
で、get_template_part('rss', 'customized');
のように読み込むテンプレートを指定したので、そのファイルを作成します。
/wp-include
のディレクトリに、feed-rss2.php
などのベーステンプレートがあるので、それをコピーしてきます。- コピーしたファイルをリネームします。
rss-customized.php
に変更します。 - テンプレートの構造を変更します。
- 通常のテーマ編集と同じ作業です。RSS用の関数がいくつか用意されているので、調べてみると便利そうです
- 変更したファイルを、
/wp-content/themes/使っているテーマ/rss-customized.php
に置きます。
これで、テンプレートの配置は完了!
アクセスしてみる #
functions.php
でadd_feed('custom', 'custom_rss_feed');
と指定したので、ブラウザで/feed/custom
にアクセスしてみましょう。これで、カスタムしたフィードが表示されているはずです!
作業はこれで以上です。 WordPressはRSSフィードの生成にデフォルトで対応しておりますが、それでは都合が悪い場合がごく稀に発生します。とはいえ、RSSなど規格が決まっているものは、なるべく標準に則りたいものですね。