add_feed()
は、WordPress に独自の RSS フィードを追加するための関数です。
標準の投稿フィードとは異なる特定のコンテンツのみを配信したい場合に活用できます。例えば、特定のカスタム投稿タイプ専用のフィードを作成したり、特定のカテゴリの記事だけをフィードとして提供することが可能です。
本記事では、add_feed()
の基本的な使い方や応用例について解説します。
機能の説明
add_feed()
は、WordPress のフィード URL に新しいフィードを追加するための関数です。この関数を使うことで、デフォルトの RSS フィードとは異なるカスタマイズされたフィードを提供することができます。
使用シーン
- 特定のカテゴリのみを含むフィードを提供したい場合
- カスタム投稿タイプ専用のフィードを作成したい場合
- 会員専用フィードや有料コンテンツ専用フィードを提供したい場合
シンプルなコード例
以下のコードは、custom_feed
というカスタムフィードを追加する例です。
function my_custom_feed() {
add_feed('custom_feed', 'custom_feed_callback');
}
add_action('init', 'my_custom_feed');
function custom_feed_callback() {
get_template_part('feed', 'custom');
}
このコードでは、custom_feed
という新しいフィードを作成し、feed-custom.php
というテンプレートを利用してフィードの内容を生成しています。
使い方の説明
基本的な使い方
add_feed()
の構文は以下の通りです。
add_feed( $feed_name, $callback_function );
引数
$feed_name
(文字列): 追加するフィードのスラッグ$callback_function
(コールバック関数): フィードを出力するための関数
カスタム投稿タイプ専用のフィードを作成
以下のコードでは、カスタム投稿タイプ news
専用のフィードを作成する例を示します。
function news_custom_feed() {
add_feed('news_feed', 'news_feed_callback');
}
add_action('init', 'news_custom_feed');
function news_feed_callback() {
get_template_part('feed', 'news');
}
これにより、https://example.com/feed/news_feed/
という URL で feed-news.php
というテンプレートを利用したフィードを配信できます。
一緒に使うことが多い関連タグ
flush_rewrite_rules()
add_feed()
を追加した後に、パーマリンクの設定を更新しないと 404 エラーが発生することがあります。そのため、flush_rewrite_rules()
を使ってリライトルールを更新することが推奨されます。
function my_custom_feed_with_flush() {
add_feed('custom_feed', 'custom_feed_callback');
flush_rewrite_rules();
}
add_action('init', 'my_custom_feed_with_flush');
追加情報で取得したい場合
get_feed_link()
追加したフィードの URL を取得するには get_feed_link()
を使用できます。
echo get_feed_link('custom_feed');
想定されるトラブル
フィードが 404 エラーになる
解決方法
flush_rewrite_rules()
を実行してリライトルールを更新する。- WordPress の管理画面で「パーマリンク設定」を開いて「変更を保存」をクリックする。
フィードの内容が空になる
解決方法
custom_feed_callback()
内で適切にheader('Content-Type: application/rss+xml; charset=UTF-8');
を設定する。get_template_part()
を使用する際に正しいテンプレートが存在することを確認する。
Q&A
まとめ
add_feed()
を使うことで、WordPress にカスタムフィードを追加できます。
特定の投稿タイプやカテゴリ専用のフィードを作成する際に便利です。
ただし、リライトルールの更新が必要になるため、flush_rewrite_rules()
の実行を忘れないようにしましょう。
コメント