RSSを読み込んで表示するのが一般的だと思います。
PHPが使える環境なら、MagpieRSSとか便利です。
http://magpierss.sourceforge.net/
日本語の解説も探せばいくらでもありますので、コード書けなくてもコピペで出来ます。
トピック投稿者
YH
(@yh)
ご教示ありがとうございます。
http://tenderfeel.xsrv.jp/php/233/
を参考にやってみたのですが、うまくいきません。
index.php
に
<?php
define(‘MAGPIE_OUTPUT_ENCODING’, ‘UTF-8’);
require(‘magpierss-0.72/rss_fetch.inc’);
$rss = fetch_rss(“http://www.hogehoge.ne.jp/wordpress/feed/”);
print “
";
print_r($rss);
print "
“;
?>
と記述してみたのですが、表示されませんでした。
それなので、ためしに
$rss = fetch_rss(“http://www.hogehoge.ne.jp/wordpress/?feed=rss2”);
と記述してみたら、よくわからないコードとエントリー内容が羅列されました。
何がおかしいのか、全くわかりません。
もし初心者にもわかるページがあれば、教えて頂ければ幸いです。
よろしくお願いします。
print_rでデータが表示されるなら、きちんとRSS取得して読めてると思います。
あとは配列からデータ取得して出力するだけです。
件名、日付とアドレスを取得して、リスト形式で吐くサンプル書いておきます。
<?php
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
require('magpierss-0.72/rss_fetch.inc');
$rss = fetch_rss("http://example.com/feed/");
foreach ($rss->items as $item ) {
$title = $item[title]; // 件名取得
$url = $item[link]; // リンク先取得
if($item['dc']['date']){ // 日付取得
$date = parse_w3cdtf($item['dc']['date']);
}else if($item[pubdate]){
$date = strtotime($item[pubdate]);
}
if($date){
$s_date = date("Y.m.d ", $date);
}
echo '<li><a href="'.$url.'">'.$s_date.$title.'</a></li>'."\n"; // リスト形式で出力
}
?>
トピック投稿者
YH
(@yh)
ありがとうございました。
うまくいきました。サンプルまで書いて頂き大変感謝しております。
重ねての質問で申し訳ありませんが、今、10件表示されているのですが、この件数を変更することは可能でしょうか?
重ね重ねご迷惑をおかけしますが、ご教示頂ければ幸いです。
wordpressの管理画面の表示設定に
「RSS/Atom フィードで表示する最新の投稿数」というのがあるので、そこを変更すればいいです。
プログラム的にやるなら、ループの回数を制限してやればOKです。
上記コードだと配信されてる分全部書き出してしまうので。
$max=5; //最大件数
$i=0; //カウンター
foreach ($rss->items as $item ){
if($i>$max){ break; } //最大件数越えてたらループを抜ける
~略~
echo '<li><a href="'.$url.'">'.$s_date.$title.'</a></li>'."\n";
$i++; //カウントアップ
}
トピック投稿者
YH
(@yh)
度々ありがとうございます。
コードを
<?php
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
require('magpierss-0.72/rss_fetch.inc');
$rss = fetch_rss("http://example.com/feed/");
$max=5; //最大件数
$i=0; //カウンター
foreach ($rss->items as $item ){
if($i>$max){ break; } //最大件数越えてたらループを抜ける
$title = $item[title]; // 件名取得
$url = $item[link]; // リンク先取得
if($item['dc']['date']){ // 日付取得
$date = parse_w3cdtf($item['dc']['date']);
}else if($item[pubdate]){
$date = strtotime($item[pubdate]);
}
if($date){
$s_date = date("Y.m.d ", $date);
}
echo '<li><a href="'.$url.'">'.$s_date.$title.'</a></li>'."\n";
$i++; //カウントアップ
}
?>
と変えてみたのですが、表示されませんでした。
挿入する場所が違っているのでしょうか。
フィードする最新の投稿数を変更してみたら、サイドバーの表示は変わったのですが、index.php(コードを記入したほう)は10件のままでした。
大変申し訳ありませんが、またご教示頂ければ幸いです。
if($i>$max){ break; } の{が全角文字でした。
if($i>$max){ break; } ですね・・・
失礼しました。
トピック投稿者
YH
(@yh)
ありがとうございます。
とても助かりました。
少しは勉強してわかるようになりたいと思います。
今後ともどうぞよろしくお願いします。