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>タグ内にカテゴリーとタグが区別なく出力」されます。これは混乱を招きやすいので、今回はカテゴリ...
コメント
コメント一覧 (1件)
[…] […]