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