2026年5月27日
2026年5月27日
WordPressのRSSフィードをカスタマイズする方法・件数・内容・独自フィード追加
はじめに
「RSSフィードの記事数を増やしたい」「カスタム投稿タイプのフィードを追加したい」——WordPressのRSSフィードはfunctions.phpやフィルターフックを使って柔軟にカスタマイズできます。基本設定から独自フィードの追加まで解説します。
症状・原因
WordPressのデフォルトRSSフィードはexample.com/feed/で配信されます。表示件数は設定 → 表示設定で変更できますが、カスタム投稿タイプのフィード追加や特定カテゴリのフィード、フィード内容のカスタマイズにはコードが必要です。
解決手順
ステップ1:フィードの基本設定を変更する
管理画面での設定:
設定 → 表示設定
→ フィードの最新の投稿数: 10(デフォルト)→ 任意の数に変更
→ フィードでの各投稿の表示: 全文 / 抜粋 を選択
// コードでフィード件数を変更
add_filter( 'pre_option_posts_per_rss', function() {
return 20; // 20件に変更
} );
// フィードを抜粋のみにする
add_filter( 'the_excerpt_rss', function( $excerpt ) {
return wp_trim_words( $excerpt, 55, '...' );
} );
// フィードから全文を除外して抜粋のみ配信
add_filter( 'the_content_feed', function( $content ) {
return get_the_excerpt();
} );
ステップ2:カスタム投稿タイプをフィードに追加する
// カスタム投稿タイプ「news」をメインフィードに追加
add_filter( 'request', function( $query_vars ) {
if ( isset( $query_vars['feed'] ) ) {
if ( ! isset( $query_vars['post_type'] ) ) {
$query_vars['post_type'] = [ 'post', 'news' ];
}
}
return $query_vars;
} );
// カスタム投稿タイプ専用のフィードを追加
// → example.com/feed/type/news/
add_action( 'init', function() {
add_feed( 'news', function() {
// カスタム投稿タイプ「news」のフィードを出力
$args = [
'post_type' => 'news',
'posts_per_page' => 20,
];
$query = new WP_Query( $args );
header( 'Content-Type: application/rss+xml; charset=UTF-8' );
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<rss version="2.0">';
echo '<channel>';
echo '<title>' . get_bloginfo( 'name' ) . ' - ニュース</title>';
echo '<link>' . get_bloginfo( 'url' ) . '</link>';
while ( $query->have_posts() ) {
$query->the_post();
echo '<item>';
echo '<title>' . get_the_title() . '</title>';
echo '<link>' . get_permalink() . '</link>';
echo '<description><![CDATA[' . get_the_excerpt() . ']]></description>';
echo '</item>';
}
echo '</channel></rss>';
wp_reset_postdata();
} );
} );
ステップ3:フィードにカスタム情報を追加する
// RSSフィードの各アイテムにアイキャッチ画像を追加
add_action( 'rss2_item', function() {
global $post;
if ( has_post_thumbnail( $post->ID ) ) {
$thumbnail = get_the_post_thumbnail_url( $post->ID, 'medium' );
echo '<media:content url="' . esc_url( $thumbnail ) . '" medium="image" />';
}
} );
// フィードヘッダーにmedia名前空間を追加
add_action( 'rss2_ns', function() {
echo 'xmlns:media="http://search.yahoo.com/mrss/"' . "\n";
} );
// フィードにカスタムフィールドを追加
add_action( 'rss2_item', function() {
$author_profile = get_post_meta( get_the_ID(), '_author_profile', true );
if ( $author_profile ) {
echo '<wp:author_profile><![CDATA[' . $author_profile . ']]></wp:author_profile>';
}
} );
ステップ4:特定カテゴリのフィードURLを確認する
WordPressデフォルトのフィードURL一覧:
全投稿: example.com/feed/
カテゴリ別: example.com/category/tech/feed/
タグ別: example.com/tag/wordpress/feed/
著者別: example.com/author/username/feed/
検索結果: example.com/?s=keyword&feed=rss2
コメント: example.com/comments/feed/
投稿コメント: example.com/2025/01/01/post-slug/feed/
ステップ5:フィードのキャッシュとセキュリティを設定する
// フィードのキャッシュ時間を変更(デフォルト12時間)
add_filter( 'wp_feed_cache_transient_lifetime', function( $seconds ) {
return 3600; // 1時間に変更
} );
// フィードへのアクセスを会員限定にする
add_action( 'do_feed', function() {
if ( ! is_user_logged_in() ) {
wp_redirect( wp_login_url( get_feed_link() ) );
exit;
}
}, 1 );
// 不要な場合はフィードを無効化
add_action( 'do_feed', '__return_false', 1 );
add_action( 'do_feed_rdf', '__return_false', 1 );
add_action( 'do_feed_rss', '__return_false', 1 );
add_action( 'do_feed_rss2', '__return_false', 1 );
add_action( 'do_feed_atom', '__return_false', 1 );
注意事項
- フィードをカスタマイズすると、RSSリーダーや外部サービスとの互換性に影響する場合があります。変更後は実際のRSSリーダーで動作確認してください。
- フィードに全文を含めると、コンテンツのスクレイピングリスクが高まります。抜粋のみ配信するか、著作権情報を追加することを検討してください。
- Google Discover等のサービスはRSSフィードを参照する場合があります。フィードURLを変更する際は301リダイレクトを設定してください。
まとめ
WordPressのRSSフィードカスタマイズは「表示件数・全文/抜粋設定→カスタム投稿タイプの追加→メディア情報の付加→キャッシュ設定」の流れで整備できます。購読者体験の向上と著作権保護のバランスを考慮しながら設定しましょう。関連記事:WordPressでカスタム投稿タイプを登録する方法、WordPressのSEO設定を最適化する方法。