Learning site for website creation

別サイトにWordPress記事一覧を表示する

公開日:2022年12月03日

RSSフィードを使用して別サーバにある別サイトにWordPressの記事一覧を表示します。

まずはWordPressサイトURLに「/feed/」をつけてRSSを確認します。

ちなみに「https://jobtech.jp/」の場合は「https://jobtech.jp/feed/」でアクセスすると以下のようなコードが表示されます。

<?xml version="1.0" encoding="UTF-8"?>
  <rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <title>ジョブテク</title>
    <atom:link href="https://jobtech.jp/feed/" rel="self" type="application/rss+xml" />
    <link>https://jobtech.jp</link>
    <description>Learning site for website creation</description>
    <lastBuildDate>Thu, 17 Nov 2022 09:32:14 +0000</lastBuildDate>
    <language>ja</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <generator>https://wordpress.org/?v=6.0.3</generator>
    <item>
      <title>消せないフォルダやファイルを削除</title>
      <link>https://jobtech.jp/other/10701/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=post-10701</link>
      <dc:creator><![CDATA[aku2]]></dc:creator>
      <pubDate>Tue, 15 Nov 2022 10:03:43 +0000</pubDate>
      <category><![CDATA[その他]]></category>
      <guid isPermaLink="false">https://jobtech.jp/?p=10701</guid>
      <description><![CDATA[<p>Vueのプロジェクト等を削除できない場合の対応方法。 トラブル状況 「フォルダー アクセスの拒否」画面が表示され「続行」押します。 再度「フォルダー アクセスの拒否」画面が表示され「再試行」押しても同じ画面が表示されます…</p>
      The post <a href="https://jobtech.jp/other/10701/">消せないフォルダやファイルを削除</a> first appeared on <a href="https://jobtech.jp">ジョブテク</a>.]]></description>
      <content:encoded><![CDATA[<p>Vueのプロジェクト等を削除できない場合の対応方法。</p>
      <h2>トラブル状況</h2>
      <p>「フォルダー アクセスの拒否」画面が表示され「続行」押します。</p>
        :
    </item>
  </channel>
</rss>

RSSフィードを取得して表示する

WordPressを使っていないサイトでRSSフィードを取得して表示します。

<div class="Blog">
  <div class="Blog_inner">
    <div class="Blog_body">
      <?php
      $url = "https://○○○.com/feed/";
      $context = stream_context_create(
        [
          'http' => [
            'method' => 'POST',
            'header' => 'Content-Type: application/json',
          ],
          'ssl' => [
            'verify_peer' => false,
            'verify_peer_name' => false,
          ],
        ]
      );
      $feedContents = file_get_contents($url, false, $context);
      $feedRSS = simplexml_load_string($feedContents);
      $feedItem = $feedRSS->channel;
      $i = 0;
      $limit = 5; //表示件数
      foreach ($feedItem->item as $item) : if ($i === $limit) break; ?>
        <div class="BlogItem">
          <a class="BlogItem_link" href="<?php echo h($item->guid); ?>">
            <div class="BlogItem_title">
              <?php echo h($item->title); ?>
            </div>
            <div class="BlogItem_meta">
              <div class="BlogItem_category">
                category:<?php echo h($item->category); ?>
              </div>
              <div class="BlogItem_date">
                <?php echo h(date("Y年 n月 j日", strtotime($item->pubDate))); ?>
              </div>
            </div>
          </a>
        </div>
      <?php $i++;
      endforeach; ?>
    </div>
  </div>
</div>