WordPressのRSSフィードから情報を取得する方法です。
基本的に他サイトのRSSを参照して何かしたい場合に利用します。
例をあげるならニュースサイトですかね。外部サイトの新着情報の一覧とか作れます。
また、アイキャッチ画像を表示したい場合はRSSに画像パスを含める必要があります。
WordPressのRSSフィードにアイキャッチ画像を追加する方法です。 RSSにアイキャッチ画像のパスを含めておくと、外部サイトを経由した場合でも画像を表示できます。このサイトも本家からサブドメインのRSSを参照し、そこからアイキャッチ画像のパスを入手してます。主にニュースサイトとかで利用される手法で、文字だけリンクよりも見た目が良い感じになります。 ◆ 安全にfunctions.phpをカスタマイズする方法functions.phpの修正に不安がある人は以下を参考にしてください。 ...
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')));
}
}
あとがき

廃止された時の対策に関数系の存在チェックすると安全かも。
この記事は参考になりましたか?
コメント