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

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

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

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

[img-link url=”http://dogmap.jp/2009/04/30/switching-feed-template/” title=”各種フィード用テンプレートの変更 | dogmap.jp”]


投稿日

カテゴリー:

投稿者:

 最終更新日:

タグ: