WordPress 複数の外部ブログのRSSを取得し最新情報を表示!(AmebaのPRを表示せず、キャッシュしない。)

blue-jある団体があるとする。

その団体に多くの人間が所属し、それぞれがブログを持っていたとしよう。

その複数のブログの中から最新のブログ(例えば5件)を自分が作っているWordpressに表示したいと思った。 

調べれば、Wordpressにはそもそも「SimplePie」というRSS取得・表示する物が入っていた。

それを使って複数のRSSを取得し、最新のブログを任意の件数で表示する方法を模索し。表示に成功しました。



今回は最新の3件を表示している。

内容を軽く説明すると、
キャッシュはせず、ユーザーがこのページにアクセスした時に最新の記事を引っ張ってくるよう

ここで設定している。

そしてURLは

こうなっている。
,で区切ればいくらでもサイトを登録できる。

そして

はAmeba等のPR記事、言うなれば宣伝を削除している。
上で設定している通り、
$blog_amountでは表示する件数を設定し
$blog_cacheでは取得する記事数を設定する。
何故こんなめんどくさい事をするのか。

それは最初の段階で取得する記事の数を3と設定しPRを削除すると
削除された記事の数だけ表示される記事が減る
からだ。
3つ取得してPRが1つあった場合、結果表示される記事は2つになってしまう。
なので8記事取得し、その8記事からPRを削除する方法にした。
さすがにPRが6つや7つあるとは思えないのでね。 

あとはクルクル回し$blog_amount分表示した。
 
そして
は記事抜粋
800と書いてある数字を減らしたり、増やしたりして抜粋の文字数を調整してください。

これでRSSから複数のブログを指定して、なおかつ表示件数を変えることなくAmebaのPR記事を削除する事に成功した。

ちなみに、僕はカスタムフィールドで投稿にRSSを登録し記事それぞれに最新のブログを表示している。
余談だがそのPHPを記しておく。

get_field(‘blogrss’)がカスタムフィールドを取得する関数。
ここは面倒くさいので説明を省きます。

そういえば最後まで言ってなかったが、何故キャッシュを使わなかったというと
登録するブログが増えた場合、記憶するキャッシュもドンドン増えていく訳で
そうなるとサーバーの容量が一気に圧迫されるからだ。
ただ、キャッシュにした方が全てのブログの最新情報などが引っ張って来れるのでindexは充実するだろう。
しかし対策が出来てない以上、手を伸ばせないのでキャッシュしない方法に落ち着いた。

また新しい方法が見つかれば記事にします。 

2015年2月18日更新

「マイペースクリエイターの覚え書き」さんがこの記事を参考にして、もっと優秀かつ簡略化されたコードを紹介しています。
ここにリンクを記します。
っていうかマイペースクリエーターさんの使ったほうが良いと思います。


WordPressにアメブロの新着記事のRSSを取得して表示、さらにPR記事を除外(2013年版)[WordPress使えそうなスニペットシリーズ]

 

コメント

タイトルとURLをコピーしました