外部の複数のRSSをサムネイル付きで表示したい(未完成~誰か教えて!)

ふと、サイドバーに

パソコンのお仲間のブログやお友達のブログ、ROSEのブログの更新情報を載せたいなという衝動に駆られ、あっちこっち彷徨った。

いろいろ見たけど、いくつか方法があるようだ。

理想としては、
・複数のRSSを表示
・各一件づつを取得
・時系列に並べる
・サムネイル(小さ目)を表示
・公開日付表示
・抜粋(短め)表示
など・・・

5年越しに解決しました。

外部RSSを表示させるいくつかの方法

1.Google Feed APIを使う
2.ブログパーツを使う
3.fetch_feedを使う

など、ありましてぜーんぶやってみましたが・・・
ブログパーツはなんとなーくパス。
残るは、”Google Feed API”と”fetch_feed”ですが、とっても難しくて、サムネイルも表示できてないし。

採用した”fetch_feed”での表示方法

現時点では、”fetch_feed”で表示していますので、こちらをご紹介。
RSS表示

<?php include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed(array(
'http://rose.hughughag.net/feed',
'http://otake.hughughag.net/feed',
'http://rssblog.ameba.jp/toramomoe/rss20.xml',
'http://line.hughughag.net/feed',
'http://masae.hughughag.net/feed',
'http://memepi.blog86.fc2.com/?xml',
'http://yellowcamelia.blog18.fc2.com/?xml',
'http://kedamagaho.blog64.fc2.com/?xml'

));
if (!is_wp_error( $rss ) ) : 
    $rss->set_item_limit(1);
    $rss->set_cache_duration(1800);
    $rss->init();
    $maxitems = $rss->get_item_quantity(3); 
    $rss_items = $rss->get_items(0, $maxitems); 
    date_default_timezone_set('Asia/Tokyo');
endif;
?>
<ul class="other_rss">
    <?php if ($maxitems == 0) echo '<li>更新情報がありません。</li>';
    else
    foreach ( $rss_items as $item ) : ?>
<li class="alllink">

<?php echo $item->get_date("Y年n月j日"); ?> <a href='<?php echo $item->get_permalink(); ?>' target="_blank"><?php echo $item->get_title(); ?></a> by <?php echo $item->get_feed()->get_title(); ?><br />
<?php echo mb_substr(strip_tags($item->get_description()), 0, 25); ?>
<p class="linkarea"><a href='<?php echo $item->get_permalink(); ?>' target="_blank">more...</a></p>
</li>
    <?php endforeach;?>

以上を表示する場所に入れるわけですが・・・
ねこもりやは、プラグインWordPress › Post Snippets « WordPress Plugins使ってるので、
Post Snippets
表示したい場所に[other_rss] と書くだけ!
注:Post Snippets では、最初の<?phpと最後の?>を省くこと。

参考にさせて頂いたサイトでは、サムネイルを表示するために

<a href='<?php echo $item->get_permalink(); ?>'>
<?php
$first_img = '';
if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi', $item->get_content(), $matches ) ) {
$first_img = $matches[1];
}
?>
<?php if ( !empty( $first_img ) ) : ?><img src="<?php echo esc_attr( $first_img ); ?>" alt="" style="width:100%;max-height:150px;"><?php endif; ?>
<?php echo $item->get_title(); ?></a>

を、付け加えてるわけですが、コレを付け加えるとエラーになるのです。
なぜだかわからず、今のところ、サムネイルなしに。

どなたか、お知恵をお貸しくださいませ。

参考サイト

1.Google Feed APIを使う

簡単に外部RSSをサイトに表示できるGoogle Feed API【複数RSS対応編】 – ウェブソク
↑のサイトはjquery使ってHTML化させてるとかで、タグが触りやすい。
ブログサイトなどのRSSを取り込んで画像も一緒に表示させるフィード機能 – Cre’ps inc.
↑こちらもわかりやすくてよかったんだけど、なぜか表示すらされず。エラーにでもなればわかるんだけど。。。

2.ブログパーツを使う

RSS表示用ブログパーツ | FeedWind(フィードウィンド)
複眼RSS - アクセスを増やすブログパーツ
画RSS – アクセスアップ ブログパーツ

3.fetch_feedを使う

【Wordpress】複眼RSS卒業、Fetch_feedにサムネイルをつける: 拝啓、平和の象徴さまへ
WordPressのRSSに画像を追加して、他のブログで読み込む方法 | immature design

ただし、サムネイル付はどの参考サイトのコードもエラーになる。

RSSをサポートしていないtwitterのRSSを生成

twitterを表示させたい向きには、こちらをご利用されるといいかも。
Pipes: TWU-Feed

おまけ・・・wordpressのfeedにサムネイルを含める

以下をfunctions.phpに追加する。

//フイードにサムネイルを追加
function do_post_thumbnail_feeds($content) {
    global $post;
    if(has_post_thumbnail($post->ID)) {
        $content = '<div>' . get_the_post_thumbnail($post->ID) . '</div>' . $content;
    }
    return $content;
}
add_filter('the_excerpt_rss', 'do_post_thumbnail_feeds');
add_filter('the_content_feed', 'do_post_thumbnail_feeds');

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA