RSSから情報を取得する方法 & RSSのキャッシュを無効化

RSSから情報を取得する方法 & RSSのキャッシュを無効化

※ 当サイトは広告を含みます。

WordPressのRSSフィードから情報を取得する方法です。

基本的に他サイトのRSSを参照して何かしたい場合に利用します。
例をあげるならニュースサイトですかね。外部サイトの新着情報の一覧とか作れます。

また、アイキャッチ画像を表示したい場合はRSSに画像パスを含める必要があります。

RSSのキャッシュを無効化

先にRSSのキャッシュ機能を無効化します。

WordPressにはRSSをキャッシュする機能があり、通常だと前回取得から12時間経過しないと再取得しません。
そのため、常に最新の新着情報を取得したい場合はキャッシュ機能自体を無効化する必要があります。

このコードを追加するとキャッシュが無効化されます。


// RSSのキャッシュを無効化
add_action('wp_feed_options', function (&$feed) {
  $feed->enable_cache(false);
});

RSSの情報を取得

最初にinclude_onceでライブラリを追加。実はWordPress本体側に存在するライブラリです。


include_once(ABSPATH . WPINC . '/feed.php');

次にfetch_feedでRSSを取得します。引数のURLは配列指定が可能です。
つまり、複数個のRSSを放り込んでも勝手にソートしてくれます。超便利。


$feeds = fetch_feed(
  array(
    'https://takemi.blog/feed/',
  )
);

ちなみに取得失敗がありえるのでis_wp_errorでエラー処理が必要です。


if (is_wp_error($feeds)) {
  return;
}

最後に情報を取得するサンプルです。


$post_num = 10; // 取得する記事数

$rss_items = $feeds->get_items(0, $feeds->get_item_quantity($post_num));
if ($rss_items) {
  foreach ($rss_items as $item) {
    // パーマリンク
    $permalink = $item->get_permalink();

    // アイキャッチ画像(media:thumbnail)
    $thumbnail = $item->get_thumbnail();
    $image = $thumbnail['url']; // 連想配列で属性が取得できる

    // 記事のタイトル
    $title = $item->get_title();

    // 記事の説明
    $description = $item->get_description();

    // 投稿日時(UTCなのでタイムゾーンを指定して変換)
    $date = new DateTime($item->get_date());
    $date->setTimezone(new DateTimeZone(get_option('timezone_string')));
  }
}

あとがき

管理人
管理人

廃止された時の対策に関数系の存在チェックすると安全かも。

この記事は参考になりましたか?

関連記事

コメント

この記事へのコメントはありません。