サポート » 使い方全般 » fetch_feed でgoo blogのフィードが受信できない?

  • v2.8 から採用された SimplePieのコード「fetch_feed」を使って、他のサイトの更新情報を一覧としてサイドバーに表示しています。サイドバーにphpを表示するのにはPHP Code Widgetを利用しています。コードは以下のような感じです。
    (参考記事:http://ja.forums.wordpress.org/topic/9219?replies=7

    <?php
    $Flist = fetch_feed(array(
      'http://example.com/rss/feed/goes/here',
      'http://example.com/rss/feed/goes/here2',
      'http://....'
     ));
    if (!is_wp_error( $Flist ) ) :
        $Flist->set_cache_duration(3600);
        $Flist->set_item_limit(1);
        $Flist->init();
        $maxitems = $Flist->get_item_quantity();
        $Flist_items = $Flist->get_items(0, $maxitems);
        date_default_timezone_set('Asia/Tokyo');
    endif;
    ?>
    <ol>
    <strong>○○○○</strong>
    <?php if ($maxitems == 0) echo '<li>No items.</li>';
        else
        foreach ( $Flist_items as $item ) : ?>
    	<li style="margin-left:7px;">
    		<?php echo $item->get_date("m/d  "); ?><a href='<?php echo $item->get_permalink(); ?>' target="_blank"><?php echo $item->get_feed()->get_title(); ?></a>
    	</li>
    	<?php endforeach; ?>
    </ol>
    1. include_once(ABSPATH . WPINC . ‘/feed.php’); は自分の環境の場合必要ありませんでした。(すでに宣言されている?)
    2. 同じページにリストを2つ置くので、通常 $rssとなる部分の名前を”$Flist”に変更しています
    3. 投稿日(更新日)と、ブログのタイトルを表示、リンクは最新記事に飛ぶようにした昔のドリコムRSSのようなシンプルなものです。

    上記コードでほぼ問題なく表示されるのですが、なぜかgooブログだけうまくフィードを取得できず、表示できません。RSS1.0も、RSS2.0も同様です。苦肉の策で現在のところRSSMIXというサービスを使って再度RSSを作り対応していますが、根本的には解決していません。

    興味を持たれた方で、gooブログのRSSフィードを使って検証してくださる方、ヒントや意見を下さる方がいれば幸いです。WPのバージョンは3.4.1、最新版です。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 centree

    (@centree)

    自己解決しました。
    確証はありませんが、RSSを取得に行くとき、gooブログの方でuser-agentにwordpressの文字が入っていると拒否されているようです。

    ユーザーエージェントを書き換えることによってgooブログの方もRSSフィードの読み込みが可能です。

    <?php
    $Flist = fetch_feed(array(
    http://example.com/rss/feed/goes/here&#8217;,
    http://example.com/rss/feed/goes/here2&#8217;,
    http://&#8230;.’
    ));
    $Flist->set_useragent(‘●●●’.SIMPLEPIE_USERAGENT);
    if (!is_wp_error( $Flist ) ) :
    …….

    ●●●のところは適当な文字を英数字で入れます。

    ちまたではUser-Agentの偽装という言い方もされ、不正アクセス防止法などへの抵触も気になりますが、調べてみたところ法令に記される「認識符号」というのはIDやパスワードのことのようで、当面はUser-Agentの変更は同法に抵触しないだろうという認識に至りました。

    また、多くのブラウザで(開発目的ではありますが)User-Agentの変更機能が搭載または搭載可能なようですので、現時点では日本でも問題になっていないという判断です。

    ご意見あれば返信欄にコメントを残してください。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「fetch_feed でgoo blogのフィードが受信できない?」には新たに返信することはできません。