RSSフィードで、アイキャッチ画像・抜粋・カテゴリーを外部サイトに表示させる

WordPress関連記事

RSS(Really Simple Syndication)は、「ウェブサイトのコンテンツを配信するためのXMLベースのフォーマット」のことで、WordPressにはデフォルトでついている機能です。

これを外部サイトで読み込ませることで、このサイトで記事を更新したら、自動で外部サイトの記事も最新のものに更新されます!

今回はRSSフィードなどをカスタマイズして思い通りの表示になるようにします。

目次

fanctions.php にRSSフィードのコードを追加

RSSフィードには通常、アイキャッチ画像(サムネイル画像)は含まれていません。それを出すようにします。

/**
 * RSSフィードでサムネイル画像(アイキャッチ)も取得できるようにする
 * 参考サイト:https://kasumiblog.org/rss-eyecatching/
 */
function rss_post_thumbnail( $content ) {
	global $post;
	if ( has_post_thumbnail( $post->ID ) ) {
		$content = '<p>' . get_the_post_thumbnail( $post->ID ,  'thumbnail' ) . '</p>' . $content;
	} // アイキャッチ画像をサムネイルサイズに指定.
	return $content;
}
add_filter( 'the_excerpt_rss', 'rss_post_thumbnail' );
add_filter( 'the_content_feed', 'rss_post_thumbnail' );

RSSフィードを表示させる、PHPコードを書く

RSSフィードを出力するサイトに、以下のPHPコードを書くと表示されます。

このコードでは、以下のコードが出力できるようになっています。

  • アイキャッチ画像(サムネイル画像)
  • 記事の作成日
  • カテゴリー(記事に登録しているカテゴリー全てを出力)
  • タイトル
  • コンテンツ抜粋(※抜粋する文字量は調整可能)
<?php
// このコードはテスト用です。実装する際は使いやすいようにカスタマイズしてください。
// 参考サイト:https://kasumiblog.org/rss-eyecatching/

// URL
$url     = 'http://localhost:10054/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 );
$i       = 0; //$iを初期化

foreach ( $getRss->channel->item as $item ) {
	$i++;
	if ( $i == 6 ) {
		break;// 5件まで表示する
	}
	$description = $item->description;// コンテンツ
	$imgurls = array();
	preg_match( '/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]+\>/i', $description, $imgurls );// コンテンツからimgタグ内のURLを抜き出す(中は配列になっており、0はimgタグ全体、1はsrcの中身)
	$summary = '';
	if (isset($item->children('content', true)->encoded)) {
		$encoded = $item->children('content', true)->encoded;
		$summary = strip_tags($encoded);// タグを除去して記事全文を抽出する
	}
	$summary = mb_substr($summary, 0 , 200); // 記事冒頭の200文字を抽出する
	$date        = date( 'Y.n.j', strtotime( $item->pubDate ) );// 投稿日
	$link         = $item->link; // 記事のリンク
	$title        = $item->title; // 記事のタイトル
	$categories[] = $item->category; // 記事のカテゴリー(配列に追加)
	$categories = array_unique($categories); // 重複したカテゴリーを削除
	?>
  <!-- ここからコンテンツ -->
  <article class="list">
	<a href="<?php echo $link; ?>" target="_blank">
	  <div class="common_img">
		<img src="<?php echo $imgurls[1]; ?>" alt="<?php echo $title; ?>">
	  </div>
	  <div class="common_content">
	  	<p class="common_time"><?php echo $date; ?></p>
		<?php foreach ($categories as $category) { // カテゴリーをあるだけ表示
			echo '<p class="common_category">カテゴリー:' . $category . '</p>';
		} ?>
		<p class="common_title">タイトル:<?php echo $title; ?></p>
		<p class="common_text">コンテンツ抜粋:<?php echo $summary; ?></p>
	  </div>
	</a>
  </article>
<?php } ?>

参考サイト

こちらの記事を基に、コードを改造しました!

kasumiblog
ワードプレスのRSSフィードでサムネイル画像(アイキャッチ)を取得する方法【簡単】 ワードプレスのRSSフィードを利用して、外部サイトに記事一覧をだしているけど、サムネイル画像(アイキャッチ画像…

関連記事

あわせて読みたい
WordPressのRSSフィードにカテゴリーとタグを区別して出力する方法 WordPressのデフォルトの設定では、「RSSフィードの<category>タグ内にカテゴリーとタグが区別なく出力」されます。これは混乱を招きやすいので、今回はカテゴリ...
WordPress関連記事

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

目次