カテゴリー
WordPressカスタマイズ

WordPress の RSS フィードを完全にコントロールする

WordPress ではコンテンツの更新情報を知らせるために標準で RSS を出力します。
その出力方法は…
http://example.com/feed/
該当 URL にfeedを加えるだけです。
単純に「フォード URL を知りたい」ということであればこれで OK です!

以下、WordPress のフィード出力の仕組みについて詳しく知りたいという方のために詳しく解説します。

WordPress では次の形式の Feed 出力が可能です。

  1. RDF/RSS 1.0フィード
  2. RSS 0.92フィード
  3. RSS 2.0フィード
  4. Atom フィード

また、WordPress が出力するフィードにはサイトフィードやコメントフィードなど複数あり、任意のフィードを出力するためにはコントロールが必要です。

WordPress のフィードの種類

WordPress が出力できるフィードの内容は下記です。

  1. サイトフィード
  2. サイト全体のコメントフィード
  3. 記事単位のコメントフィード
  4. カテゴリーフィード
  5. タグフィード
  6. 作成者フィード
  7. 検索結果フィード

このうち、3~7についてはデフォルトの状態でヘッダ内wp_head()にフィードへのリンクが出力されます。
基本的にはヘッダのフィード URL の有無に関わらず、フィード URL へアクセスすれば、do_feed()という関数でフィードページが生成されます。
特別な事情がなければ、それ自体を停止する必要はないでしょう。

フィード URL 自動出力を実装

functions.phpautomatic-feed-linksを有効にすることで、上記1~2のフィード URL をヘッダに出力させることができます。
この場合はwp_head()内にデフォルトのフィードが出力されます。

<?php add_theme_support( 'automatic-feed-links' ); ?>

ほとんどの WordPress テーマではあえてデフォルトの挙動に変更は加えていないものが多いです。
つまり、すべてのフィード URL が出力されている状態です。
この状態で問題がなければ、なにも設定する必要はありません。
また、デフォルトで出力される形式は RSS 2.0となります。
http://example.com/feed/

※ちなみにテーマチェックではautomatic-feed-linksがないとエラーになるようです。

不要なフィード URL をヘッダから削除する

automatic-feed-linksがなければ、1~2は表示されません。
しかし、前述のようにほとんどのテーマではこちらが有効になっている状態ですので、一切のフィード URL を表示しない場合はこちらを削除します。
そして、functions.phpfeed_links_extraでリムーブすれば、3~7を一括で削除することができます。

<?php remove_action('wp_head', 'feed_links_extra',3); ?>

この状態ですべてのフィード URL が出力されなくなります。

個別にフィード URL を出力する

任意のフィードのみ必要な場合は上記の手順でデフォルトの出力を除去した上で次の4種類フィードを必要に応じて個別に出力します。

RDF/RSS 1.0フィード

<?php bloginfo('rdf_url'); ?>

出力 URL→http://example.com/feed/rdf/

RSS 0.92フィード

<?php bloginfo('rss_url'); ?>

出力 URL→http://example.com/feed/rss/

RSS 2.0フィード

<?php bloginfo('rss2_url'); ?>

出力 URL→http://example.com/feed/

Atom フィード

<?php bloginfo('atom_url'); ?> 

出力 URL→http://example.com/feed/atom/

コンテンツの内容によってはほとんどコメントが付かない、あるいはコメント欄そのものが存在しないサイトもあるでしょう。
そのような場合はコメントフィードそのものが不要ですね。

サイトフィードのみを RSS 2.0で出力(例題)

まずは feed_links_extra をfunctions.phpで無効化。

<?php remove_action('wp_head', 'feed_links_extra',3); ?>

※すべてのフィードを出力するadd_theme_support('automatic-feed-links')があれば削除します。

header.phpで直接フィード URL を出力します。

<link rel="alternate" type="application/rss+xml" title="<?php echo bloginfo('name'); ?>»フィード" href="<?php bloginfo('rss2_url'); ?>">
profile image

執筆:R3098

WEB サービス構築・監修が生業です。WordPress 関連では Aurora Heatmap などプラグイン開発も行っています。悩めるサイト運営者の無料相談受付けます!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。