BLOG

ブログ

  • Web制作

WordPressサイトのRSSフィードを外部サイトに埋め込む

WordPressサイトのRSSフィードを外部サイトに埋め込む

はじめに

最近久しぶりにRSSというものに触れたのですが、すっかり忘れてしまっていました。

10年以上前ですが当時アメブロが流行っていて、アメブロのRSSフィードを引っ張ってきてコーポレートサイトに貼り付ける、といったことをよくやっていたのですが。。

そもそもRSSって何だっけ?

RSSとは「Really Simple Syndication」や「Rich Site Summary」の略で、Web上でニュース記事やブログ記事の更新情報を配信するためのフォーマットです。

RSSを利用することによって外部サイトの更新情報を別サイト上で表示することができます。

RSSフィードURLを取得

WordPressサイトであれば標準で RSS フィードが組み込まれています。

サイトの RSS フィード URL を確認するには、Web サイトの URL の末尾に /feed/ を追加します。

たとえば、このサイトの場合、URLが https://libesta.jp なので、RSS フィード URL は https://libesta.jp/feed/ になります。

RSSの表示方法

表示したい箇所に以下のようなコードを書くことで外部サイトの更新情報を表示させることができます。

PHPのコードなので、HTMLファイルの場合は、あらかじめ拡張子をPHPに変更しておきます。

<ul class="news__list">
    <?php

    // URL
    $url     = 'https://libesta.jp/feed/'; // 取得したサイトのRSS フィード URL
    $context = stream_context_create(
        array(
            'http' => array(
                'method' => 'POST',
                'header' => 'Content-Type: application/json',
            ),
            'ssl'  => array(
                'verify_peer'      => false,
                'verify_peer_name' => false,
            ),
        )
    );
    $getTXT  = file_get_contents($url, false, $context);
    $getRss  = simplexml_load_string($getTXT);
    $i       = 0; //$iを初期化

    foreach ($getRss->channel->item as $item) {
        $i++;
        if ($i == 6) {
            break; // 5件まで表示する
        }
        $description = $item->description; // コンテンツ
        if (isset($item->children('content', true)->encoded)) {
            $encoded = $item->children('content', true)->encoded;
            $summary = strip_tags($encoded); // タグを除去して記事全文を抽出する
        }
        $summary = mb_substr($summary, 0, 200); // 記事冒頭の200文字を抽出する
        $date        = date('Y.n.j', strtotime($item->pubDate)); // 投稿日
        $link         = $item->link; // 記事のリンク
        $title        = $item->title; // 記事のタイトル
        $categories[] = $item->category; // 記事のカテゴリー(配列に追加)
        $categories = array_unique($categories); // 重複したカテゴリーを削除
    ?>
        <!-- ここからコンテンツ -->

        <li class="news__item">
            <a href="<?php echo $link; ?>" target="_blank">
                <div class="date"><?php echo $date; ?></div>
                <?php foreach ($categories as $category) { // カテゴリーをあるだけ表示
                    echo '<div class="category">' . $category . '</div>';
                } ?>
                <div class="post-ttl"><?php echo $title; ?></div>
            </a>
        </li>
    <?php } ?>
</ul>

こちらの記事を参考にさせていただきました。

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