WordPressでfeedのテンプレートをカスタマイズする手順まとめ

更新

ワードプレスのfeedでは、デフォルトでは、各記事のtitle要素に記事タイトルしか含まれません。しかしそれだと情報不足になる場合もあるので、feedのテンプレートをカスタマイズする方法を調べてまとめてみました。

なお、feedに含まれる投稿を絞り込むカスタマイズについてはこちらをご覧ください。

  1. feedのテンプレートはどこにある?
  2. テーマファイルにfeed-~.phpをコピペ
  3. function.phpに書き込み
  4. 各feed-~.phpをカスタマイズする

feedのテンプレートはどこにある?

カスタマイズするには、まず、feedのテンプレートがどこにあるか把握しないといけません。

feedのテンプレートはデフォルトでは、wp-includesフォルダーにあります。名前が「feed-」で始まるファイルがfeedのテンプレートです。

feed-atom.php

atom形式のfeedテンプレート

feed-atom-comments.php

atom形式のcomment-feedテンプレート

feed-rdf.php

rdf形式のfeedテンプレート

feed-rss.php

rss0.92形式のfeedテンプレート

feed-rss2.php

rss2形式のfeedテンプレート

feed-rss2-comments.php

rss2形式のcomment-feedテンプレート

テーマファイルにfeed-~.phpをコピペ

カスタマイズするのに、wp-includes内のファイルを直接編集するのはあまりよくないので、上記の6種類のファイルのうち、カスタマイズしたいものだけをコピーして、テーマフォルダーに貼り付けます。

ウェブシュフの場合だと、TwentyTwelveをカスタマイズ中なので、TwentyTwelveフォルダー内に貼り付けます。

wp-includesフォルダーの名前が「feed-」で始まるファイルのうち、カスタマイズしたいものを、現在使用しているテーマのフォルダーにコピペします。

function.phpに書き込み

feed-~.phpをテーマファイル内にコピペしただけでは、wp-includesフォルダー内のファイルがfeedのテンプレートとして選択されたままです。

そこで、、テーマファイル内のfeed-~.phpがfeedのテンプレートになるように、function.phpで設定を行います。

ウェブシュフの場合は、feed-atom.php、feed-rdf.php、feed-rss.php、feed-rss2.phpの4つをカスタマイズしたいので、以下の内容をfunction.phpに書き込みます。

// アクションフック リムーブ
remove_filter('do_feed_rdf', 'do_feed_rdf', 10);
remove_filter('do_feed_rss', 'do_feed_rss', 10);
remove_filter('do_feed_rss2', 'do_feed_rss2', 10);
remove_filter('do_feed_atom', 'do_feed_atom', 10);
// アクションフック 追加
function custom_feed_rdf() {
$template_file = '/feed-rdf.php';
$template_file = ( file_exists( get_stylesheet_directory() . $template_file )
? get_stylesheet_directory()
: ABSPATH . WPINC
) . $template_file;
load_template( $template_file );
}
add_action('do_feed_rdf', 'custom_feed_rdf', 10, 1);
function custom_feed_rss() {
$template_file = '/feed-rss.php';
$template_file = ( file_exists( get_stylesheet_directory() . $template_file )
? get_stylesheet_directory()
: ABSPATH . WPINC
) . $template_file;
load_template( $template_file );
}
add_action('do_feed_rss', 'custom_feed_rss', 10, 1);
function custom_feed_rss2( $for_comments ) {
$template_file = '/feed-rss2' . ( $for_comments ? '-comments' : '' ) . '.php';
$template_file = ( file_exists( get_stylesheet_directory() . $template_file )
? get_stylesheet_directory()
: ABSPATH . WPINC
) . $template_file;
load_template( $template_file );
}
add_action('do_feed_rss2', 'custom_feed_rss2', 10, 1);
function custom_feed_atom( $for_comments ) {
$template_file = '/feed-atom' . ( $for_comments ? '-comments' : '' ) . '.php';
$template_file = ( file_exists( get_stylesheet_directory() . $template_file )
? get_stylesheet_directory()
: ABSPATH . WPINC
) . $template_file;
load_template( $template_file );
}
add_action('do_feed_atom', 'custom_feed_atom', 10, 1);

これで各feed-~.phpをカスタマイズする準備がやっと出来ました。

各feed-~.phpをカスタマイズする

これで、テンプレートタグ等を使って、カスタマイズを自由自在に行えます。

ウェブシュフは、feed-atom.php、feed-rdf.php、feed-rss.php、feed-rss2.phpの4つで

<?php the_title_rss();?>

<?php   
$cates = get_the_category(); $cat = $cates[0];
$ancestors=get_ancestors($cat->cat_ID, 'category' );
$kosu=count($ancestors);
for ($i = 1; $i <= $kosu; $i++)
{   
$catname[$i-1]=get_cat_name($ancestors[$kosu-$i]);
}
$catname[$kosu]=$cat->name;
$title=$post->post_title.'|'.implode( ' ', $catname ).'|'.get_bloginfo('name');
echo $title;
?>

に置き換えて、feedの記事タイトルの末尾にカテゴリを付けてみました。

Special Thanks

各種フィード用テンプレートの変更 | dogmap.jp

WordPressでfeedのテンプレートをカスタマイズする手順まとめ」への1件のフィードバック

  1. ピンバック: 【WordPress】自サイトのRSS内のauthor情報を消す方法 | Web Covering

コメントを残す

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