RSSで複数サイトの記事を表示する時のベスト方法
-
マルチサイトの隣サイトから、そしてサーバーが違う別のサイトから、
あるカテゴリの新着記事を表示させる処理で悩んでいます。
色々試してみましたけど、完璧な方法はなかなか見つからないですね。表示したいのは、サイト(ブログ)のタイトル、記事のタイトル、日付、サムネイルです。
例えば、————- (サイト名)
| サムネイル | これは記事のタイトルです。 2014-05-14
————-
のような感じですね。こういう条件を全て果たしているコードがなかなか見つかりません。
今テストしているのは、
1.サイトのタイトルと、記事のタイトルのみしか表示しません<?php /*--------------------- 外部RSSの取得と表示 -----------------------*/ include_once(ABSPATH . WPINC . '/rss.php'); //wordpress標準定数 //取得feedのURLリスト $rss_url = array( 'サイト1feed URL', 'サイト2feed URL'', 'サイト3feed URL'' ); foreach ($rss_url as $key => $value) { $rss = fetch_rss($value); $maxitems = 10; $items[$key] = array_slice($rss->items, 0, $maxitems); } //ブログURLから、そのブログのタイトルを返す関数 function blog_title($url) { //ブログタイトル名とルートURL $rss_blog = array( 0 => array( 'url' => 'サイト1URL', 'title' => 'サイト1タイトル' ), 1 => array( 'url' => 'サイト2URL', 'title' => 'サイト2タイトル' ), 2 => array( 'url' => 'サイト3URL', 'title' => 'サイト3タイトル' ) ); $blog_title = ''; foreach ($rss_blog as $v) { if (strpos($url, $v['url']) !== FALSE) { $blog_title = $v['title']; break; } } return $blog_title; } ?> <?php if (!empty($items)) : ?> <?php foreach ($items as $value) : ?> <?php foreach ($value as $item) : ?> <?php if ($item['dc']['date']) { $date = substr($item['dc']['date'], 0, 4) . '/' . substr($item['dc']['date'], 5, 2) . '/' . substr($item['dc']['date'], 8, 2); } else { $date = ''; } ?> <ul> <li> <span class="site"><?php echo blog_title($item['link']); ?></span> <a href="<?php echo $item['link']; ?>" title="<?php echo $item['title']; ?>" target="_blank"><?php echo $item['title']; ?></a> </li> </ul> <?php endforeach; ?> <?php endforeach; ?> <?php endif; ?>
2.記事のタイトルと日付とカテゴリのタイトル(?)のみしか表示しません。(サイトのタイトルさえ表示できれば…)
<?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed(array( 'サイト1 feed URL'', 'サイト2 feed URL'', 'サイト3 feed URL'' )); if (!is_wp_error( $rss ) ) : $rss->set_cache_duration(1800); $rss->init(); $maxitems = $rss->get_item_quantity(10); $rss_items = $rss->get_items(0, $maxitems); date_default_timezone_set('Asia/Tokyo'); endif; ?> <dl> <?php if ($maxitems == 0) echo '<dt>No items.</dt>'; else foreach ( $rss_items as $item ) : ?> <dt> <a href='<?php echo $item->get_permalink(); ?>' target="_blank"><?php echo $item->get_title(); ?></a><br /> <span class="site"><?php echo $item->get_feed()->get_title(); ?></span><br /> </dt> <dd><?php echo $item->get_date("Y-n-j"); ?></dd> <?php endforeach; ?>
1は、日付の表示ができず、2はサイトのタイトルが表示できないのです。
この2つをうまく混ぜて使おうとしでもなかなかうまくいきませんでした。誰かいい方法ないでしょうか。
5件の返信を表示中 - 1 - 5件目 (全5件中)
5件の返信を表示中 - 1 - 5件目 (全5件中)
- トピック「RSSで複数サイトの記事を表示する時のベスト方法」には新たに返信することはできません。