トップページ > WordPress Plugins > WordPressにRssReaderを設定する方法

WordPressにRssReaderを設定する方法

926 views

■概要

WordPressの公式プラグインでRssReaderを探したものの欲しいものが見つからず、ネット検索で探し当てました。WordPressな日々というサイトにあるRSSリーダー・テンプレートというテンプレートファイルがそれです。ただ、設定方法が記載されていなかったので、試行錯誤を繰り替えしてやっとこさ設置することができました。画面上の「ITニュース」がそれです。備忘録を兼ねて設置方法をご紹介します。

■RSSリーダー・テンプレートのインストールと設定


[tu@ufuso ~]$ su – ← rootユーザーになる
パスワード: ← rootのパスワードを入力(表示はされない)

[root@ufuso ~]# wget http://www.junyx.net/wp-content/uploads/2008/06/rss_pagephp.txt
← RSSリーダー・テンプレートをダウンロードする
2010-02-07 17:06:28 (111 KB/s) – `rss_pagephp.txt’ へ保存完了 [4704/4704]

[root@ufuso ~]# mv rss_pagephp.txt rss_page.php
← rss_pagephp.txtの名称をrss_page.phpに変更する

[root@ufuso ~]# mv rss_page.php /var/www/html/wpress/wp-content/themes/ufuso/
← rss_page.phpを現在使っているテーマフォルダに移動させる。わたしの「wpress」は
私のwordpressが入っているフォルダ名なのであなた用に変更のこと

[root@ufuso ~]# vi /var/www/html/wpress/wp-content/themes/ufuso/rss_page.php
← rss_page.phpファイルを開いて自分用に設定を変える

<?php
/*
Template Name: RSS_IT
 ← RSS_ITがテンプレート名になる。変更可
*/
?>
<?php get_header(); ?>

<div id="primary-content">
 ← primary-contentを使っているテーマのcontentのid名に変更すること。
メインインデックステンプレート(index.php)を開いて<?php get_header(); ?>
の直下にcontent idがあるので確認のこと

<div class="breadcrumb">
 ← contentのid名の直下にあるclass名

<?php if (function_exists('bcn_display'))
{
// Display the breadcrumb
bcn_display();
} ?>
</div>
<h2>ITニュース</h2>
 ← 表示されるページのタイトルになる
<p>管理人が厳選したIT関連ニュースのサマリーです。</p>
 ← 表示される注釈になる
<div>
<?php
// デフォルト値の設定
$d_maxitems = 5;
 ← 表示できるRSSサイトの最大数。設定例では5
$d_maxlen   = 200;
 ← 表示される最大文字数。設定例では200
$total_maxitems = 100; ← 表示されるRSSの最大表示数。設定例では100
// WordPressのライブラリをインクルード
include_once(ABSPATH . WPINC . '/rss.php');
// RSSフィードの設定
// フィードの名称、URL、最大表示数
$names[] = array('name'=>'ITmedia総合',  ← 表示させるRSSサイト名
'url'=>'http://www.itmedia.co.jp/',  ← 表示させるサイトのURL
'max'=>5); ← 表示されるRSS記事の最大数
// フィードのURL
$rsses[] = fetch_rss('http://rss.rssad.jp/rss/itmtop/1.0/topstory.xml');
 ← 表示させるサイトのフィードURL
// 以下繰り返し
$names[] = array('name'=>'ZDNet Japan総合',  ← 表示させるRSSサイト名
'url'=>'http://japan.zdnet.com/', 
 ← 表示させるサイトのURL
'max'=>5); ← 表示されるRSS記事の最大数
$rsses[] = fetch_rss('http://feeds.japan.zdnet.com/zdnet/rss');
 ← 表示させるサイトのフィードURL
$names[] = array('name'=>'CNET Japan総合', 
 ← 表示させるRSSサイト名
'url'=>'http://japan.cnet.com/', 
 ← 表示させるサイトのURL
'max'=>8); ← 表示されるRSS記事の最大数
$rsses[] = fetch_rss('http://feeds.japan.cnet.com/cnet/rss');
 ← 表示させるサイトのフィードURL
$names[] = array('name'=>'Engadget 日本版', 
 ← 表示させるRSSサイト名
'url'=>'http://japanese.engadget.com/',  ← 表示させるサイトのURL
'max'=>5); ← 表示されるRSS記事の最大数
$rsses[] = fetch_rss('http://feeds.feedburner.com/engadget/japanese');
 ← 表示させるサイトのフィードURL
$names[] = array('name'=>'The Blog Herald 翻訳版',  ← 表示させるRSSサイト名
'url'=>'http://jp.blogherald.com/', 
 ← 表示させるサイトのURL
'max'=>5, ← 表示されるRSS記事の最大数
'timeoffset'=>-9);
$rsses[] = fetch_rss('http://jp.blogherald.com/feed/'); ← 表示させるサイトのフィードURL
//$names[] = array('name'=>'ITpro総合', 'url'=>'', 'max'=>5);
//$rsses[] = fetch_rss('http://pheedo.nikkeibp.co.jp/f/ITpro');
// 次の行はデバッグ用に配列の内容を表示させるためのもの
//print '<pre>'; print_r($rsses); print '</pre>';
// 表示する情報を配列に整理して格納
$i = 0;
$items = array();
foreach ($rsses as $rss) {
$sitename = $names[$i]['name'];
$siteurl  = $names[$i]['url'];
if ($names[$i]['max'] == '') {
$maxitems = $d_maxitems;
} else {
$maxitems = $names[$i]['max'];
}
//print "$sitename, $maxitems; ";
$timeoffset = 0;
if ($names[$i]['timeoffset'] != NULL) {
$timeoffset = $names[$i]['timeoffset'];
}
$arr = array_slice($rss->items, 0, $maxitems);
//$arr = array_slice($rss->items, 0);
foreach ($arr as $ar) {
// 日付データの取得
if ($ar['dc']['date'] != '') {
$date = $ar['dc']['date'];
}
elseif ($ar[pubdate] != '') {
$date = $ar[pubdate];
}
elseif ($ar[issued] != '') {
$date = $ar[issued];
}
else {
$date = '';
}
// 重複記事のスキップ
foreach ($items as $item) {
if ($item['title'] == $ar['title']) { continue 2; }
}
// 配列に整形
$items[] = array('date'    => strtotime($date) + $timeoffset*3600,
'sitename' => $sitename,
'siteurl' => $siteurl,
'title'   => $ar['title'],
'link'    => $ar['link'],
'summary' => $ar['summary']
);
}
$i++;
}
// タイムスタンプで降順に並べ替え
rsort($items);
?>
<?php
// HTMLの表示
// 表示するアイテムがなかったとき
if (empty($items)) echo '<p>アイテムがありません。</p>';
else
// アイテムがあるとき
$i = 0;
foreach ( $items as $item ) :
$i++;
if ($i > $total_maxitems) { break; }
?>
<h3><a href='<?php echo $item['link']; ?>' title='<?php echo $item['title']; ?>'
 target="_blank"><?php echo $item['title']; ?></a></h3>
<div><?php
if ($item['date'] > 1) {
echo date("Y年m月d日 H:i", $item['date']);
}
?> [<a href='<?php echo $item['siteurl']; ?>' title='<?php echo $item['sitename']; ?>'
 target="_blank"><?php echo $item['sitename']; ?></a>]</i></div>
<p>
<?php
// サマリーを整形
$maxlen = $d_maxlen;
$summary = strip_tags($item['summary']);
$summary = preg_replace('/[rn]/', '', $summary);
$tail = "";
if (mb_strlen($summary) > $maxlen) {
$tail = " ...";
}
echo mb_substr($summary, 0, $maxlen) . $tail;
?>
<a href='<?php echo $item['link']; ?>' title='<?php echo $item['title']; ?>'
 target="_blank"> &raquo; 続きを読む</a>
</p>
<?php endforeach; ?>
</div>
</div>

<?php get_sidebar(); ?>
 ← <?php get_header(); ?>の直下に置く場合もあるので使用しているテーマを確認のこと
<?php get_footer(); ?>

■RSSリーダー・テンプレートのインストールと設定

「管理画面」を開いて「ページ」を新規で作成する。図の朱書どおり作成したら「公開」ボタンを押す。

rss01

本サイトでは、「ITニュース」で使用している

rss02



にほんブログ村 IT技術ブログへ←お役に立ちましたらクリックをお願いいたします。にほんブログ村IT技術ブログへ参加しています


One single comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

CAPTCHA