WordPressのRSSフィード情報は、デフォルトだと投稿日の新しいものから表示されます。
これを更新日の新しいもの順から表示するようにテーマ側からカスタマイズする方法の紹介です。
目次
主な手順
RSSのカスタマイズに必要な主な手順は以下です。
- RSSカスタム用のファイルを作成
- functions.phpでRSSカスタムファイルを読み込む
単に、更新順表示にカスタマイズするだけなら、コピペを2回するだけでできる簡単なものです。
RSSカスタム用のファイルを作成
まずは、子テーマフォルダ直下に「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の設定値を取得する場合の参考には以下。
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/にアクセスしてフィードを確認します。
通常なら、以下のように投稿日の新しい順に表示されていたのが
更新日順に表示されていれば、カスタマイズ成功です。
※FirefoxでRSSを閲覧した時の表示。
キャプチャーの日付は、「feed-rss2.php」の以下の部分が表示されています。
<pubDate><?php the_time('c');//公開日 ?></pubDate>
表示される日付けも更新日にするには、以下のように変更してください。
<pubDate><?php the_modified_time('c');//更新日 ?></pubDate>
ただ、マークアップ(pubDate:公開日)と中身(更新日)の意味合いは変わってしまいます。
まとめ
こんな感じでRSSの内容をカスタマイズすることができます。
今回は、「更新日順に並び替えをする」というカスタマイズでしたが、その他のカスタマイズも、今回の方法を少し変更するだけで、ある程度対応できるかと思います。
「RSSの出力を自分好みにカスタマイズしたい」なんて場合にどうぞ。