fetch feedは本当に便利
WordPressで外部のWordPressのRSSを取得してページ上に表示する方法として「Fetch_feed」があります。
詳細は公式リファレンスをどうぞ
これを使うと何が良いかというと、外部のRSS取得ツールなどを使うことなく、かなり簡単にRSSを取得・出力することができます。
(Google Feed apiの廃止でRSSで取得してた箇所が非表示になった時は大変でした。。。)
しかし、このfetch feedで必ず皆つまづく部分があります。それは…
サムネイル(アイキャッチ)が取得できない(正確には取得しづらい)
そうなんです。RSS上で出力されているサムネイル画像のURLが取得しづらいんです。
タイトルやリンクURLはすんなり取れるんですが、<media:thumbnails url>が皆さん取得できず、仕方なく記事中の1枚目の画像を取得したり、function.phpを加工してRSSの<description>などにアイキャッチのURLを埋め込んだりなどして対応しているようです。
もちろん自分が管理しているサイトやしっかり対応してくれる管理者がいるサイトにそういった加工をしてもらえれば良いのですが、そうじゃないサイトも世の中には沢山あります。
今回ご依頼いただいたのも、「提携したサイトの新着3件を自サイトに表示して欲しい。しかし先方のWordPressアカウントは共有いただけないのでRSSからデータ取得して欲しい」というものでした。
もちろんタイトルやリンクだけではなく、アイキャッチの取得も要望に入っていたし、RSSを見たら画像URLも出力されていたので軽い気持ちで「全然できますよ」と答えたものの、実際に着手してみたらアイキャッチのURLが取れなくて大苦戦。
正直なところ、国内の記事では皆「アイキャッチURLを記事本文や抜粋に埋め込んで取得しましょう!」という方法ばかり。
途方に暮れていたときにたまたま見た海外のフォーラムで「enclosureから取れば良いんじゃない?」という回答が。
答え:get_enclosureからアイキャッチURLは取れる
「enclosure」とはなんぞや?というところからfetch_feedで取得した内容をprint_rで表示して見たところ、[enclosure]のなかに[thumbnails]という項目を発見!
foreachで回してる中に以下を記述して見たところ、見事にアイキャッチのURLが取れました!
<?php foreach ( $rss_items as $item ) : $item_image = $item->get_enclosure();//アイキャッチURL $image = $item_image->thumbnails[0];//アイキャッチURL $item_date = $item->get_date();//日時 $date = date('Y.m.d',strtotime( $item_date ));//日時 $title = $item->get_title();//記事タイトル?>
※日時やタイトル部分は気にしないでください。使ったコードそのまま貼ってます。
取得したアイキャッチURLの出力は
<img src="<?php echo $image; ?>" />
で出力できます。
ぜひ使ってみてくださいね!
この記事へのコメントはありません。