Feed.phpを利用して静的PHPファイルからRSSフィードを取得して新着記事を表示する方法
最終更新日:
Feed.phpを利用してRSSフィードを取得して新着記事を表示する方法をご紹介します。
目次
githubからrss-phpというライブラリを取得
・https://github.com/dg/rss-php
↑こちらの中で使用するのは/src/Feed.phpのみです。
PHPファイル内にコードの記述
あとは先ほどのFeed.phpファイルをディレクトリに格納し、
RSSを読み込みたいファイルに
<ul class="rsslist">
<?php
require_once('Feed.php'); // 『Feed.php』までのパス
$feed = new Feed;
$url = 'https://○○.com/feed/'; // RSSのURL
$rss = $feed->loadRss($url);
$num = 6; //表示させたい件数
$i = 0;
$desW = 60; //概要(本文)の文字数
if ( $desW != 0 ){
$desW = ($desW*2)+2;
}
foreach ( $rss->item as $item ){
if($i>=$num){
} else {
$site_name = $rss->title; // サイト名
$site_link = $rss->link; // サイトリンク
$site_description = $rss->description; // サイトディスクリプション
$title = $item->title; // 記事タイトル
$link = $item->link; // 記事リンク
$timestamp = strtotime( $item->pubDate ); // 更新日時
$image = $item->image->url; // アイキャッチ
$description = $item->description; // 概要(本文)
$imgurl = preg_match('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]+\>/i', $description, $imgurls);//コンテンツからimgタグ無いのURLを抜き出す
$description = strip_tags($description);
if ( $desW != 0 ){
$description = mb_strimwidth($description, 0, $desW, "…",'utf-8'); // 概要(本文)の文字数が超えたら『…』が付く
}
$eyecatch = '/img/no-image.png'; // アイキャッチ画像がない場合の代替画像
if ( $image ){
$eyecatch = $image;
}
$days = 7; // 『New』を表示する日数
$today = date('U'); // 今日って
$sa = date('U',($today - $timestamp)) / 86400; // timestamp()の引数に86400を指定
?>
<li>
<div class="pic"><a href="<?php echo $link; ?>"><img src="<?php echo $imgurls[1]; ?>" alt="<?php echo $title; ?>"></a></div>
<div class="txt">
<h3><a href="<?php echo $link; ?>"><?php echo $title; ?></a></h3>
<div class="day"><time datetime="<?php echo date( "Y.m.d", $timestamp ); ?>"><?php echo date( "Y.m.d", $timestamp ); ?></time></div>
<p><?php echo $description; ?></p>
<div class="more"><a href="<?php echo $link; ?>">続きを読む</a></div>
</div>
</li>
<?php
$i++;
}
}
?>
</ul>
でOK
WordPressの記事のアイキャッチを表示する為の手順
WordPressはそのままではアイキャッチがRSSに表示されていませんので
functions.php内に
/* 【RSS】RSS フィードにアイキャッチ画像を表示 */
function rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$thumbnail_id = get_post_thumbnail_id($post->ID); // アイキャッチ画像の ID を取得
$thumbnail = wp_get_attachment_image_src( $thumbnail_id, 'medium' ); // medium サイズの画像情報を取得
$thumbnail_url = $thumbnail[0]; // URL を取得
$content = '<p><img src="'.$thumbnail_url.'" alt="'.get_the_title().'" /></p><p>'.$content.'</p>';
} else {
$content = '<p><img src="'.get_template_directory_uri().'/img/nowprinting.png" alt="'.get_the_title().'" /></p><p>'.$content.'</p>';
}
return $content;
}
add_filter('the_excerpt_rss','rss_post_thumbnail');
add_filter('the_content_feed','rss_post_thumbnail');
を追記します。
これでRSSのdescription内にアイキャッチが追加されているかと思いますので
$description = $item->description; // 概要(本文)
$imgurl = preg_match('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]+\>/i', $description, $imgurls);//コンテンツからimgタグ無いのURLを抜き出す
こちらの記述でアイキャッチ画像が取得できます。
最後に、rssフィードの中身を確認するために、主要ブログのRSSフィードURLをご紹介します。
主要ブログのRSSフィードURL
WordPress
https://【ブログURL】/feed/
https://【ブログURL】/?feed=rss2
アメブロ
http://rssblog.ameba.jp/【アメーバID】/rss.html
http://rssblog.ameba.jp/【アメーバID】/rss20.xml
FC2ブログ
http://【ブログURL】/?xml
ライブドアブログ
http://blog.livedoor.jp/【ライブドアID】/index.rdf



