WordPressではコンテンツの更新情報を知らせるために標準でRSSを出力します。
その出力方法は…
http://example.com/feed/
該当URLにfeedを加えるだけです。
単純に「フォードURLを知りたい」ということであればこれでOKです!
以下、WordPressのフィード出力の仕組みについて詳しく知りたいという方のために詳しく解説します。
WordPressでは次の形式のFeed出力が可能です。
- RDF/RSS 1.0フィード
- RSS 0.92フィード
- RSS 2.0フィード
- Atom フィード
また、WordPressが出力するフィードにはサイトフィードやコメントフィードなど複数あり、任意のフィードを出力するためにはコントロールが必要です。
WordPressのフィードの種類
WordPressが出力できるフィードの内容は下記です。
- サイトフィード
- サイト全体のコメントフィード
- 記事単位のコメントフィード
- カテゴリーフィード
- タグフィード
- 作成者フィード
- 検索結果フィード
このうち、3~7についてはデフォルトの状態でヘッダ内wp_head()
にフィードへのリンクが出力されます。
基本的にはヘッダのフィードURLの有無に関わらず、フィードURLへアクセスすれば、do_feed()
という関数でフィードページが生成されます。
特別な事情がなければ、それ自体を停止する必要はないでしょう。
フィードURL自動出力を実装
functions.php
でautomatic-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.php
でfeed_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'); ?>&raquo;フィード" href="<?php bloginfo('rss2_url'); ?>">