Written by Kasumi

ワードプレスのRSSフィードでサムネイル画像(アイキャッチ)を取得する方法【簡単】

ワードプレスのRSSフィードを利用して、外部サイトに記事一覧をだしているけど、サムネイル画像(アイキャッチ画像)を取得することが出来ない。。

このような疑問に回答します。

本記事では、ワードプレスのRSSフィード内にサムネイル画像(アイキャッチ画像)を含める方法について、解説します。

fanctions.phpにコードを追加

<?php 
// Feedにアイキャッチ画像を表示する
function rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '<p>' . get_the_post_thumbnail($post->ID) . '</p>' . $content;
}
return $content;
}
add_filter('the_excerpt_rss', 'rss_post_thumbnail');
add_filter('the_content_feed', 'rss_post_thumbnail');
?>

上記ソースをRSSを配信する側のワードプレスのfunctions.phpに追加します。

ワードプレスにはもともとRSSフィードが備わってますが、アイキャッチ画像を引っ張ってきておりません。

上記ソースを入れることで、通常記事のコンテンツテキストが入れられてあるRSSフィードの場所に、pタグ+アイキャッチURL付きのimgタグを差し込むことが可能になります。

https://×××.com/feed/

<content></content:encoded>

実際に上記URL(×××.comのところはRSS配信するワードプレスサイトURL)をブラウザでひらいて、contentタグ内にimgタグが出力されているか確認しましょう。

コードが反映されていたらOKです。

RSS記事を埋め込む側で出力するコードを記載

<?php
//URL
$url = "https://×××.com/feed"; //記事一覧を持ってきたいサイトのfeedURLを記載
$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);
 
foreach ($getRss->channel->item as $item) {
  $i++;
  if ($i == 6) break;//何件まで表示するか
  $description = $item->description;//コンテンツ
  $imgurl = preg_match('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]+\>/i', $description, $imgurls);//コンテンツからimgタグ無いのURLを抜き出す
  $date = date("Y年 n月 j日", strtotime($item->pubDate));//投稿日
  $link = $item->link; //記事のリンク
  $title = $item->title; //記事のタイトル
  $category = $item->category; //記事のカテゴリー
  $e_content     = $item->children("content", true);
  $e_encoded     = (string) $e_content->encoded;
  $output = preg_match('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]+\>/i', $e_encoded, $matches);
  $first_img = $matches[1]; //記事中の最初の画像
?>
  <!-- ここからコンテンツ -->
  <article class="list">
    <a href="<?= $link ?>">
      <div class="common_img">
        <img src="<?= $imgurls[1] ?>" alt="<?= $title ?>">
      </div>
      <div class="common_content">
        <p class="common_title"><?= $title ?></p>
        <p class="common_category"><?= $category ?></p>
      </div>
    </a>
  </article>
<?php } ?>

後は上記コードを、RSS埋め込み側のサイトにコピペすればOK!

以前紹介したRSSフィードの埋め込み方の記事と同様のやり方で、アイキャッチ部分を追加した形になります。

以前の紹介記事はこちら
https://kasumiblog.org/rss-acquisition/

以上で完成です。

まとめ

ワードプレスでデフォルトで備わっているRSSフィードですがアイキャッチはデフォルトでは備わってないんですよね。

いずれは上記のようなやり方をしなくても、デフォルトで備わってほしいです。。

以上で解説を終わります。

目次

関連記事

プログラミング

MANPローカルサーバーで400 Bad Request errorになりサイトが表示されない【解決!ローカルのドメイン・ディレクトリ名が原因かも?】

2022.04.18
905
WordPress

【WordPress】カスタムタクソノミーのURL階層にカスタム投稿タイプのスラッグを追加する方法

2023.02.16
1564
HTMLCSS プログラミング

【簡単】checkbox(チェックボックス)のデザインをカスタマイズする方法【CSS】

2022.02.20
30143
WordPress

【WordPress】ターム一覧を表示する方法【結論:get_termsを使おう】

2022.05.28
3770