WordPressのRSSフィードを外部サイトに埋め込んで新着情報を表示する方法

公開日
最終更新日
WordPressサイトのRSSフィードを外部サイトに埋め込む

「別サイトの更新情報を、自分のサイトに一覧で表示したい」——コーポレートサイトにブログの新着を載せる、といった場面でよくある要望です。こんなときに使えるのがRSSフィードです。

結論から言うと、WordPressサイトには標準でRSSフィードが用意されており、そのフィードURLをPHPで取得・解析すれば、外部サイト上に更新情報を表示できます。この記事では、RSSの基本から、フィードURLの確認方法、表示用コードまでを解説します。

そもそもRSSとは

RSSは「Really Simple Syndication」や「Rich Site Summary」の略で、ニュース記事やブログ記事の更新情報を配信するためのフォーマットです。RSSを利用すると、外部サイトの更新情報を別のサイト上で表示できます。

RSSフィードURLを取得する

WordPressサイトであれば、標準でRSSフィードが組み込まれています。フィードURLは、サイトのURLの末尾に/feed/を追加するだけで確認できます。

たとえばサイトのURLがhttps://example.com/なら、RSSフィードURLはhttps://example.com/feed/になります。

RSSの表示方法

表示したい箇所に、次のようなPHPコードを書くことで、外部サイトの更新情報を表示できます。PHPのコードなので、HTMLファイルに書く場合は、あらかじめ拡張子を.phpに変更しておきます。

<ul class="news__list">
    <?php
    // 取得したいサイトのRSSフィードURL
    $url     = 'https://example.com/feed/';
    $context = stream_context_create(
        array(
            'ssl' => array(
                'verify_peer'      => false,
                'verify_peer_name' => false,
            ),
        )
    );
    $getTXT  = file_get_contents($url, false, $context);
    $getRss  = simplexml_load_string($getTXT);
    $i       = 0; // カウンタを初期化

    foreach ($getRss->channel->item as $item) {
        $i++;
        if ($i == 6) {
            break; // 5件まで表示する
        }
        $date  = date('Y.n.j', strtotime($item->pubDate)); // 投稿日
        $link  = $item->link;  // 記事のリンク
        $title = $item->title; // 記事のタイトル
    ?>
        <li class="news__item">
            <a href="<?php echo esc_url($link); ?>" target="_blank" rel="noopener">
                <div class="date"><?php echo esc_html($date); ?></div>
                <div class="post-ttl"><?php echo esc_html($title); ?></div>
            </a>
        </li>
    <?php } ?>
</ul>

simplexml_load_string()でRSS(XML)を読み込み、foreachで各記事(item)を回して、投稿日・タイトル・リンクを取り出しています。if ($i == 6)で件数を制限し、ここでは新しい5件だけを表示しています。出力時はesc_url()esc_html()でエスケープしておくと安全です。

なお、外部フィードを毎回リアルタイムに取得すると、相手サイトの状態によっては表示が遅くなることがあります。アクセスの多いページでは、取得結果を一定時間キャッシュする仕組みを入れておくと安心です。次に紹介するfetch_feed()なら、このキャッシュを自動で行ってくれます。

補足:WordPress内なら fetch_feed() も便利

表示先がWordPressサイト内であれば、WordPressに用意されているfetch_feed()関数を使う方法もあります。fetch_feed()は取得したフィードを一定時間キャッシュしてくれるため、毎回リクエストせずに済み、表示も速くなります。外部サイト(WordPress以外)に貼る場合は今回のsimplexml_load_string()を使う方法、WordPressテーマ内で使う場合はfetch_feed()、と使い分けるとよいでしょう。

まとめ

  • WordPressサイトのRSSフィードは、URL末尾に/feed/を付けると確認できる
  • PHPでフィードを取得・解析すれば、外部サイトに更新情報を表示できる
  • WordPress内ならfetch_feed()を使うとキャッシュも効いて便利

RSSを使えば、更新のたびに手作業でお知らせを転記する必要がなくなります。複数サイトを運用しているときや、ブログの新着をコーポレートサイトに載せたいときに役立ちます。

参考:https://lifescrewdesign.com/blog/wordpress/wordpress-rssfeed/

IPPEI FUKUTA(株式会社バッズブルー 代表)

IPPEI FUKUTA(株式会社バッズブルー 代表)

WordPress専門のWeb制作者として15年・150サイト以上を担当。現場でつまずいた問題と解決策を、同じ制作者・フリーランスの方に向けて発信しています。無料のWeb便利ツール集「バドツール」を開発・運営中。