WordPressのRSSを任意のRSSフィードに変更する

WordPressは標準でRSS2.0のフィードを出力して通知していますが、このRSSFeedBurnerなど任意のRSSに変更する場合の手順をご紹介します。
RSSを出力するのを止めるのではなく、ブラウザやRSSリーダなどにRSSの場所を教えるHTMLタグを変更します。

  1. テンプレートを編集してRSSを指定するタグが自動出力されないようにする

    「wp-content/themes/テーマフォルダ/header.php」の「wp_head();」の前に次の記述を追加します。(※標準テーマの「Twenty Ten」を使用している場合、52行目付近にあります。)

    		// ブログ全体とコメントのフィードを変更する場合
    		remove_filter('wp_head', 'feed_links', 2);
    		// カテゴリーアーカイブやページのコメントフィードも変更する場合
    		remove_filter('wp_head', 'feed_links_extra', 3);
    		// この前に追加します;
    		wp_head();
    	?>
    	</head>

    参考:
    http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_head
    http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/remove_filter

  2. テンプレートに代わりのRSSを指定するタグを記述する

    「wp-content/themes/テーマフォルダ/header.php」のスタイルシート等を読み込んでいるタグの後ろに、任意のRSSを指定するタグを追加します。(※任意のRSSのURLを確認して指定してください。)

    <link rel="profile" href="http://gmpg.org/xfn/11" />
    <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />
    <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
    // この次の辺りに追加(※titleも「ブログ名 フィード」など任意で指定します。)
    <link rel="alternate" type="application/rss+xml" title="My TEST blog Feed" href="http://xxx.xxxxx.jp/example/feed/" />
    // コメントのフィード
    <link rel="alternate" type="application/rss+xml" title="My TEST blog CommentFeed" href="http://xxx.xxxxx.jp/example2/feed/" />

    ※テンプレートに日本語を記述した場合は、ファイルの文字コードUTF-8にして保存してください。

    「wp_head」から「feed_links_extra」を除去して、カテゴリーアーカイブやページのフィードのタグを出力しないようにした場合は、同じように手動で記述を追加します。
    次のように条件分岐で該当するカテゴリーアーカイブやページを表示している時にだけ、タグが出力されるようにするといいです。

    <?php
    	// カテゴリーID3のアーカイブページを表示している場合
    	if(is_category('3')) {
    		$blog_name = get_bloginfo(name);
    		$cat_name = wp_title('', false);
    		echo "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"" .$blog_name . $cat_name . " CategoryFeed\" href=\"";
    		echo "http://xxx.xxxxx.jp/example3/feed/\" />\n";
    	}
    	// ページID7のページを表示している場合
    	if(is_page('7')) {
    		$blog_name = get_bloginfo(name);
    		$page_title = wp_title('', false);
    		echo "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"" .$blog_name . $page_title . " PageCommentFeed\" href=\"";
    		echo "http://xxx.xxxxx.jp/example4/feed/\" />\n";
    	}
    	// この前の辺りに追加します。
    	/* We add some JavaScript to pages with the comment form
    	 * to support sites with threaded comments (when in use).
    	 */
    	if ( is_singular() && get_option( 'thread_comments' ) )

    参考:
    http://wpdocs.sourceforge.jp/Conditional_Tags
    http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_title

なお、ウィジェットのメタ情報を表示している人は、ウィジェットも変更する必要があります。
メタ情報ウィジェットは、記事全体のRSSとコメントのRSSのリンクも出力しているので。
その記事はまた次回・・・