WordPRessで外部サイトのRSS取得する方法
WordPressを使い、外部のサイトのRSSからデータを取得したいと思います。今回の方法はlogwのデータ(WordPress)で更新したデータをsite-lab.jp(WordPress)の新着として載せるため、取得します。
デフォルトで有効
WordPressではRSSを取得できるようになっています。コードは以下のようにして書きます。
<?php //WrodPressのfeed.phpの呼び出し include_once ABSPATH . WPINC . '/feed.php'; // 目的のFeedを取得 $feed = fetch_feed('https://www.logw.jp/feed'); if (is_wp_error($feed)) { $maxitems = 0; } else { //5件取得 $maxitems = $feed->get_item_quantity(5); $items = $feed->get_items(0, $maxitems); } ?>
↑これでデータの取得をしています。
<?php if ($maxitems): // データあったら表示 ?> <ul> <?php foreach ($items as $item): ?> <li> <?php echo $item->get_date('Y年n月j日'); ?> <a href="<?php echo $item->get_permalink(); ?>"> <?php echo mb_strimwidth($item->get_title(), 0, 60, '…'); ?></a> </li> <?php endforeach; ?> </ul> <?php else: // データ無しの場合 ?> <ul> <li>データがありませんでした。</li> </ul> <?php endif; ?>
↑ここで表示をしています。これで表示されます。もしされない場合はSimplePieが機能していない可能性があります。お使いのサーバーを確認したほうがいいです。SimplePieはphp55-simplexmlというモジュールでインストールします。
※PHP5.5系の場合。詳しくはWordPressで外部のRSSが取得できない-解決を閲覧してください。
問題点
RSS取得するのは問題ないのですが、このコードだと最新5件を表示してくれますが、記事を更新したら反映されませんでした。1時間か2時間たっても更新されません。サイトラボでは最新情報5件表示していますが、logwを見ると最新情報が違ったりしています。RSSの時間取得(デフォルト)が1時間などではないかもしれません。一度調べて見ます。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS