外部のRSSを複数取得する方法
-
外部のRSSを複数取得し、新着情報一覧を表示しています。
いつからか不明なのですが、下記エラー文が表示され、一覧が表示されなくなってしまいました。
以前、WP3.4.1からWP4.7.5へバージョンアップをいたしました。
バージョンアップが原因なのかわかりませんが、以前はでていませんでした。Fatal error: Call to undefined method WP_Error::get_item_quantity() in …
初めに作成した者が別の者で、独自のテーマのため、原因などがわからず困っております。
RSSの表示のコードは以下です。<?php function sort_news_by_date($a, $b){ if($a->date == $b->date) return 0; return ($a->date < $b->date) ? 1 : -1; } function get_news_from_feeds($feed_urls) { $news_itmes = array(); $maxnum = 5; // Get Feeds include_once(ABSPATH . WPINC .'/feed.php'); foreach($feed_urls as $site => $url) { $feed = fetch_feed($url); $maxitems = $feed->get_item_quantity($maxnum); $feed_items = $feed->get_items(0, $maxitems); foreach($feed_items as $item) { $news_item = new stdClass(); $news_item->site = (string) $site; $news_item->date = strtotime($item->get_date('Y-m-d H:i:s')); $news_item->link = $item->get_permalink(); $news_item->title = $item->get_title(); $news_items[] = $news_item; unset($news_item); } } // Get Posts $post_items = get_posts("numberposts={$maxnum}") ; foreach($post_items as $post) { $news_item = new stdClass(); $news_item->site ='post'; $news_item->date = strtotime($post->post_date); $news_item->link = get_permalink($post->ID); $news_item->title = $post->post_title; $news_items[] = $news_item; unset($news_item); } // Sort if(!empty($news_items)) { usort($news_items, "sort_news_by_date"); } // return return $news_items; } // ----------------------------------------------- $html = array(); $feed_urls = array( 'A' => 'ドメイン/A?feed=rss2&cat=3', 'B' => 'ドメイン/B?feed=rss2&cat=3', 'C' => 'ドメイン/C?cat=3&feed=rss2' ); $site_names = array( 'C' => 'Cカテゴリー', 'A' => 'Aカテゴリー', 'B' => 'Bカテゴリー' ); $news_items = get_news_from_feeds( $feed_urls ); $C_items = get_news_from_feeds( array( 'C' => $feed_urls['C'] ) ); $B_items = get_news_from_feeds( array( 'B' => $feed_urls['B'] ) ); $A_items = get_news_from_feeds( array( 'A' => $feed_urls['A'] ) ); $output_num = 0; foreach($news_items as $item) { // max number if($output_num == 6) break; //if ( $item->site !== 'post' ) continue; $output_num++; $html[] ='<dt>'.date('Y', $item->date).'.'. date('m.d', $item->date) .'<img src="'.get_bloginfo('template_directory').'/画像/icon_'.$item->site.'.png" alt="" width="45" height="20" /></dt>'; $html[] = ($output_num === 1) ? '<dd class="first">' : '<dd>'; $html[] ='<a href="'. esc_attr($item->link) .'">'. esc_attr($item->title) .'</a>'; $html[] ='</dd>'; } $output_num = 0; foreach($C_items as $item) { // max number if($output_num == 5) break; if ( $item->site === 'post' ) continue; $output_num++; $html_C[] ='<dt>'.date('Y', $item->date).'.'. date('m.d', $item->date) .'<img src="'.get_bloginfo('template_directory').'/画像/icon_'.$item->site.'.png" alt="" width="45" height="20" /></dt>'; $html_C[] = ($output_num === 1) ? '<dd class="first">' : '<dd>'; $html_C[] ='<a href="'. esc_attr($item->link) .'">'. esc_attr($item->title) .'</a>'; $html_C[] ='</dd>'; } $output_num = 0; foreach($B_items as $item) { // max number if($output_num == 5) break; if ( $item->site === 'post' ) continue; $output_num++; $html_B[] ='<dt>'.date('Y', $item->date).'.'. date('m.d', $item->date) .'<img src="'.get_bloginfo('template_directory').'/画像/icon_'.$item->site.'.png" alt="" width="45" height="20" /></dt>'; $html_B[] = ($output_num === 1) ? '<dd class="first">' : '<dd>'; $html_B[] ='<a href="'. esc_attr($item->link) .'">'. esc_attr($item->title) .'</a>'; $html_B[] ='</dd>'; } $output_num = 0; foreach($A_items as $item) { // max number if($output_num == 5) break; if ( $item->site === 'post' ) continue; $output_num++; $html_A[] ='<dt>'.date('Y', $item->date).'.'. date('m.d', $item->date) .'<img src="'.get_bloginfo('template_directory').'/画像/icon_'.$item->site.'.png" alt="" width="45" height="20" /></dt>'; $html_A[] = ($output_num === 1) ? '<dd class="first">' : '<dd>'; $html_A[] ='<a href="'. esc_attr($item->link) .'">'. esc_attr($item->title) .'</a>'; $html_A[] ='</dd>'; } ?> <dl id="news_all"> <?php echo implode("\n", $html) ?> </dl> <dl id="news_A"> <?php echo implode("\n", $html_A) ?> </dl> <dl id="news_C"> <?php echo implode("\n", $html_C) ?> </dl> <dl id="news_B"> <?php echo implode("\n", $html_B) ?> </dl>
恐れ入りますが、アドバイスなど頂けると幸いです。
10件の返信を表示中 - 1 - 10件目 (全10件中)
10件の返信を表示中 - 1 - 10件目 (全10件中)
- トピック「外部のRSSを複数取得する方法」には新たに返信することはできません。