RSSを使って、別サーバーの複数ブログの記事を呼び出して表示する方法

昨日のRSSの呼び出し対応を行った後、
「実はもう一個呼び出したいブログがあるんだけど大丈夫?」
とご相談を頂きました笑。

RSSの呼び出しについては

<ul class="date">	
<?php
include_once( ABSPATH . WPINC . '/feed.php' );
$feeduri = 'https://www.xxx.com/?feed=rss2';
$rss = fetch_feed($feeduri);
if (!is_wp_error($rss)) {
$maxitems = $rss->get_item_quantity(20);
$rss_items = $rss->get_items( 0, $maxitems );
}
foreach ( $rss_items as $item ) : ?>
    <li><a href="<?php echo $item->get_permalink(); ?>">
    <?php
    $first_img = '';
    if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi', $item->get_content(), $matches ) ) {
        $first_img = $matches[1];
    }
    ?>
        <img src="<?php echo esc_attr( $first_img ); ?>" alt="">
    <?php 
    $item_date = $item->get_date();
    $date = date('Y/m/d',strtotime( $item_date )); ?>
        <span class="dateTime"><?php echo $date; ?></span>
    <?php
    $title = $item->get_title();
    if(mb_strlen( $title ) > 40 ):
    ?>
        <span class="news_title"><?php echo mb_substr( $title,0,40 );?>...</span>
    <?php else : ?>
        <span class="news_title"><?php echo $title ;?></span>
    <?php endif; ?>		
		</a></li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>

上記のような形で実装していたのですが、
こちらの4行目のfeeduriをarrayで読み込むようにして

<ul class="date">	
<?php
include_once( ABSPATH . WPINC . '/feed.php' );
$feeduri = array( 'https://www.xxx.com/?feed=rss2' , 'https://www.yyy.com/?feed=rss2' , 'https://www.zzz.com/?feed=rss2');
$rss = fetch_feed($feeduri);
if (!is_wp_error($rss)) {
$maxitems = $rss->get_item_quantity(20);
$rss_items = $rss->get_items( 0, $maxitems );
}
foreach ( $rss_items as $item ) : ?>
    <li><a href="<?php echo $item->get_permalink(); ?>">
    <?php
    $first_img = '';
    if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi', $item->get_content(), $matches ) ) {
        $first_img = $matches[1];
    }
    ?>
        <img src="<?php echo esc_attr( $first_img ); ?>" alt="">
    <?php 
    $item_date = $item->get_date();
    $date = date('Y/m/d',strtotime( $item_date )); ?>
        <span class="dateTime"><?php echo $date; ?></span>
    <?php
    $title = $item->get_title();
    if(mb_strlen( $title ) > 40 ):
    ?>
        <span class="news_title"><?php echo mb_substr( $title,0,40 );?>...</span>
    <?php else : ?>
        <span class="news_title"><?php echo $title ;?></span>
    <?php endif; ?>		
		</a></li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>

こんな感じで対応しました。
飲食店で各店がブログを書いたりしているときなど、
オフィシャルサイトでこういう実装をすると、各店の雰囲気が伝わって面白そうですね。

上記で表示されない場合、RSSフィードの1行目が空行になっていることが原因の場合が多いので、その際はこちらの記事をご覧ください笑

是非ご参考にしてみてください。
それでは。

役に立った 0

役に立ったボタン設置してみました。是非押していってくださいm(__)m(2020年4月設置)

この記事を書いた人

mako110

原宿でWEBディレクターをやっています。
WEB業界に携わって約15年。独立して7年目です。
自分らしく、働きやすく、周りの人の役に立つ。
そんな仕事をゆるゆるとやっています。