フォーラム

[解決済み] Recent-posts を外部の index.php に表示したい (9 件の投稿)

  1. YH
    メンバー
    9 ヶ月前の投稿 #

    お世話になります。
    可能かどうかわからないのですが、Wordpress のウィジェット Recent-posts でサイドバーに表示される内容を、同じサーバの違う階層にある Wordpress 外の index.php(index.html)に表示したいと思います。
    index.php に
    <?php
    require('http://www.hogehoge.ne.jp/wordpress/?feed=rss2');
    ?>
    と記述してみたのですが、うまくいきませんでした。
    Wordpress は使い始めたばかりでまだよくわかっていません。
    php は全く承知していません。
    html, css はとりあえず使えます。
    外部の index.php に Recent-posts が表示可能であればご教示いただければ幸いです。
    よろしくお願いします。

  2. mick_ltc
    メンバー
    9 ヶ月前の投稿 #

    RSSを読み込んで表示するのが一般的だと思います。
    PHPが使える環境なら、MagpieRSSとか便利です。
    http://magpierss.sourceforge.net/
    日本語の解説も探せばいくらでもありますので、コード書けなくてもコピペで出来ます。

  3. YH
    メンバー
    9 ヶ月前の投稿 #

    ご教示ありがとうございます。
    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");
    と記述してみたら、よくわからないコードとエントリー内容が羅列されました。
    何がおかしいのか、全くわかりません。
    もし初心者にもわかるページがあれば、教えて頂ければ幸いです。
    よろしくお願いします。

  4. mick_ltc
    メンバー
    9 ヶ月前の投稿 #

    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";		// リスト形式で出力
    }
    ?>
  5. YH
    メンバー
    9 ヶ月前の投稿 #

    ありがとうございました。
    うまくいきました。サンプルまで書いて頂き大変感謝しております。

    重ねての質問で申し訳ありませんが、今、10件表示されているのですが、この件数を変更することは可能でしょうか?

    重ね重ねご迷惑をおかけしますが、ご教示頂ければ幸いです。

  6. mick_ltc
    メンバー
    9 ヶ月前の投稿 #

    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++;  //カウントアップ
    }
  7. YH
    メンバー
    9 ヶ月前の投稿 #

    度々ありがとうございます。
    コードを

    <?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件のままでした。

    大変申し訳ありませんが、またご教示頂ければ幸いです。

  8. mick_ltc
    メンバー
    9 ヶ月前の投稿 #

    if($i>$max){ break; } の{が全角文字でした。
    if($i>$max){ break; } ですね・・・

    失礼しました。

  9. YH
    メンバー
    9 ヶ月前の投稿 #

    ありがとうございます。
    とても助かりました。
    少しは勉強してわかるようになりたいと思います。
    今後ともどうぞよろしくお願いします。

返信

ログイン しなければ投稿できません。

About this Topic