english

ブログ

2018.04.13

wordpressでRSSを使って複数のブログをまとめて時系列に一覧表示する方法
wordpressでRSSを使って複数のブログをまとめて時系列に一覧表示する方法

Web制作

wordpressのマルチブログ機能を使っている場合、全てのブログをまとめて時系列に表示するなどにも使えます。
fetch_feed() 関数を使い、外部のRSSフィードを取得し表示する事ができます。
完成したソースは下記となります。

<?php
// RSS フィードを取得します。
include_once(ABSPATH . WPINC . ‘/feed.php’);

// 指定されたフィードから SimplePie のオブジェクトを取得します。
//新着情報を取得したいフィードのURLをarray関数を使い、配列で指定しています。
//配列にすることで、複数の RSS フィードを同時に取得して、1つにまとめて時系列に並べて表示することができます。
$rss_arr = array(    ‘http://xxxx.com/feed/’, ‘http://sample01.com/feed/’, ‘http://exsample/feed/’);
$rss = fetch_feed($rss_arr);if (!is_wp_error( $rss ) ) :

// ちゃんとフィードが生成されているかをチェックします。
// すべてのフィードから最新10件を出力します。
//全部表示する場合は -1
$maxitems = $rss->get_item_quantity(10);

// 0件から始めて指定した件数までの配列を生成します。
$rss_items = $rss->get_items(0, $maxitems); endif;?>

<ul>

// 取得できた RSS フィードが0件の時は「No items.」と表示します。
<?php if ($maxitems == 0) echo ‘<li>No items.</li>’;
else

// 取得できた RSS フィードが1件以上あった時は、以下のように RSS のデータを繰り返します。
// 取得したい RSS のデータは、$itemにあるデータであれば、他のデータも表示させることができます。
// 以下では、取得してきた外部の RSS フィードのサムネイル、日付、記事タイトルを表示して、その記事へのリンクを実現しています。
foreach ( $rss_items as $item ) : ?>
<li>
<a href='<?php echo $item->get_permalink(); ?>’>               //サムネイルがあれば表示します
<?php if(has_post_thumbnail()): ?>
<?php the_post_thumbnail(‘thumbnail’); ?>

//サムネイルがなければ規定の画像を表示します
<?php else: ?>
<img src=”<?php echo do_shortcode(‘https://www.axis-corp.com/‘); ?>/img/news-logo.jpg” >
<?php endif; ?>
</a>
<p class=”date”><time datetime=”<?php the_time(‘Y-m-d’); ?>”><?php the_time(‘Y.m.d’) ?></time></p>
<a href='<?php echo $item->get_permalink(); ?>’ title='<?php echo ‘Posted ‘.$item->get_date(‘j F Y | g:i a’); ?>’><p><?php echo $item->get_title(); ?></p></a>
</li>
<?php endforeach; ?>
</ul>

1点注意する点があります。
動作検証する場合はRSSフィードのキャッシュをクリアしておかないと新たな投稿が反映されないので、「functions.php」にフィルタ用のコードを挿入する必要があります。
クリアしていると、レスポンスがかなり悪くなりますので、動作確認が終わったら忘れずに消すようにしましょう。
//RSSフィードキャッシュクリア 検証したら消す
function do_not_cache_feeds(&$feed) {$feed->enable_cache(false);}add_action( ‘wp_feed_options’, ‘do_not_cache_feeds’ );

お問い合わせ

メールフォームからの
お問い合わせ