KH-WEBLOG TOP > WEBメモ > PHP > Feed.phpを利用して静的PHPファイルからRSSフィードを取得して新着記事を表示する方法

Feed.phpを利用して静的PHPファイルからRSSフィードを取得して新着記事を表示する方法

最終更新日:

Feed.phpを利用してRSSフィードを取得して新着記事を表示する方法をご紹介します。

コーディング・WordPress化作業を代行します

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

コーディング・WordPress化作業を代行します

PHPのおすすめ参考書

楽天ブックス
¥3,740 (2024/10/02 21:11時点 | 楽天市場調べ)

TAGS

.htaccess ActionScript All in one seo pack Contact Form 7 CSS CSS3 EC-CUBE Flash HTML HTML5 JavaScript jQuery LightBox PHP RSS SEO WordPress アイキャッチ画像 アクセス解析 カスタムフィールド カテゴリー カラーミーショップ カート コメント ショートコード テンプレートタグ ドロップダウンメニュー パーマリンク フォーム フルスクリーン ブログカード プラグイン ページテンプレート ページナビ ページ分割 マウスイベント リダイレクト リンク リンクカード レンタルサーバー ロールオーバー 携帯サイト 条件分岐 正規表現 関連記事