WordPressのRSS表示を更新日順に変更する方法(RSSのカスタマイズ)

WordPressのRSSフィード情報は、デフォルトだと投稿日の新しいものから表示されます。

これを更新日の新しいもの順から表示するようにテーマ側からカスタマイズする方法の紹介です。

スポンサーリンク
レクタングル(大)広告

主な手順

RSSのカスタマイズに必要な主な手順は以下です。

  1. RSSカスタム用のファイルを作成
  2. functions.phpでRSSカスタムファイルを読み込む

単に、更新順表示にカスタマイズするだけなら、コピペを2回するだけでできる簡単なものです。

RSSカスタム用のファイルを作成

まずは、子テーマフォルダ直下に「feed-rss2.php」というファイル名でファイルを作成します。

feed-rss2.php

次にそのファイルを開いて、以下を貼り付けます。

<?php require_once(ABSPATH.'/wp-load.php');//Wordpress関数を使えるようにする ?>
<?php /* RSSを更新順に出力 */ ?>
<?php echo "<?xml version='1.0' encoding='UTF-8' ?>\n"; ?>
<rss version="2.0">
<channel>
  <title><?php echo bloginfo('name');//サイト名 ?></title>
  <link><?php echo bloginfo('url');//サイトアドレス ?></link>
  <description></description>
  <language>ja</language>
  <?php query_posts("&orderby=modified&posts_per_page=".get_option("posts_per_rss"));//更新日順に並び替え ?>
  <?php while (have_posts()) : the_post(); ?>
  <item>
  <title><?php the_title();//タイトル ?></title>
  <guid isPermaLink="false"></guid>
  <link><?php the_permalink(); ?></link>
  <pubDate><?php the_time('c');//公開日 ?></pubDate>
  <updated><?php the_modified_time('c');//更新日 ?></updated>
  <description><![CDATA[
  <?php the_excerpt();//抜粋 ?>
  ]]></description>
  </item>
  <?php endwhile; ?>
  <?php wp_reset_query(); ?>
</channel>

このテンプレートファイル内で、RSSの出力形式をカスタマイズしています。

このコードは、以下のページに書かれていたものを参考にして一部修正しました。

参考 WordPressで更新時間順にRSSを出力する方法

WordPressの設定値を取得する場合の参考には以下。

参考 wordpressでいろいろな設定値を取得してみる

functions.phpでRSSカスタムファイルを読み込む

あとは、先程作成したRSS出力用のテンプレート「feed-rss2.php」を、デフォルト表示と差し替えれば良いだけです。

RSS出力の差し替えを行うには、functions.phpに以下のコードを追記してください。

//以前のRSS出力をキャンセル
remove_filter('do_feed_rss2', 'do_feed_rss2', 10);
//作成したRSS出力を読み込む
function custom_feed_rss2(){
  $template_file = get_stylesheet_directory() .'/feed-rss2.php';
  load_template($template_file);
}
add_action('do_feed_rss2', 'custom_feed_rss2', 10);

今回は、子テーマでのカスタマイズを前提にしてコードを書いています。

親テーマでカスタマイズする場合は、get_stylesheet_directory()をget_template_directory()に変更してください。

RSS差し替えは、以下のページを参考にさせていただきました。

参考 備忘録:WordPressでRSSフィードをカスタマイズする方法|ウェビメモ

動作確認

あとは、[WordpressのURL]/feed/にアクセスしてフィードを確認します。

通常なら、以下のように投稿日の新しい順に表示されていたのが

投稿日が新しい順のRSSフィード

更新日順に表示されていれば、カスタマイズ成功です。

更新日が新しい順のRSSフィード

※FirefoxでRSSを閲覧した時の表示。

キャプチャーの日付は、「feed-rss2.php」の以下の部分が表示されています。

<pubDate><?php the_time('c');//公開日 ?></pubDate>

表示される日付けも更新日にするには、以下のように変更してください。

<pubDate><?php the_modified_time('c');//更新日 ?></pubDate>

ただ、マークアップ(pubDate:公開日)と中身(更新日)の意味合いは変わってしまいます。

まとめ

こんな感じでRSSの内容をカスタマイズすることができます。

今回は、「更新日順に並び替えをする」というカスタマイズでしたが、その他のカスタマイズも、今回の方法を少し変更するだけで、ある程度対応できるかと思います。

「RSSの出力を自分好みにカスタマイズしたい」なんて場合にどうぞ。