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

2013年7月29日

古くて今は使えない記事が検索上位に出ているのをなんとかしたいシリーズ第2弾です。

Googleで「WordPress アメブロ RSS」と検索した時、上位に表示される記事の多くが、今のバージョンではもう存在しないrss.phpをincludeしていたり、既に非推奨になっているfetch_rss関数を使ったものを紹介しています。
そして、その記事を見て実際にやってみたけど上手くいかないということで取引先様より、コード改善の仕事が回ってきたのがこの記事を書くきっかけです。

前回、新着記事表示の件で長々と考えを書きましたが、「ああ、こっちもなんとかしなければ」という変な使命感に駆られました。

実はRSS取得については以前、「WordPressでRSSフィードを取得するwp_rssやfetch_rssが非推奨だった件」という記事でfetch_feedを使う方法を紹介しました。
初心者さんはわかりやすい個人のブログ記事だけから情報を探すことに終始しがちだけど、やっぱCodexの中に答えがあったりすることも多いからちゃんと読んだらいいんじゃね」ということを書いたのですが、やはりそうは言ってもCodexよりも個人ブログの方を参考にしたい人の気持ちもすごくよく分かります。

そこで、今回は検索されやすいキーワード、「アメブロ」「アメーバブログ」に特化して、PR記事を除外しつつ新着記事を任意の件数取得する方法を考えてみました。

参考にしたのはこの辺りの情報です。

とくに「Wordpress・Premire・Aftereffects備忘録」さんの記事はPRを抜いた時の記事件数の処理まで触れてあり、考え方の参考にさせていただきました。
こちらの記事ではclass-simplepie.phpをincludeしてるんですが、もう少しシンプルにしてfetch_feedを使った方法に直してみました。

PR記事を抜いても、表示される件数が減らないようにする

多く紹介されているアメブロRSS取得+PR除外記事では、表示件数を「5件」と指定してあっても、PR記事を含めたカウントになるため実際には3件とか4件しか表示されない、ということが起こります。

それを改善したのが以下の方法です。

参考記事にならって、「実際に表示したい件数($display_posts_count)」よりもあらかじめ2~3件多めに取得($get_posts_count)しておいて、「実際に表示したい件数($display_posts_count)」が、表示処理された件数を超えないようにチェック、超えた時点でループを抜けるようにしてみました。

特に問題がなければ、3~5行目の数字やURLを変えるだけでOKです。
ul>li要素でマークアップしていますが、このあたりはご自身で変更していただければと思います。

さいごに

なかなか、「何が正しい、何が間違っているのかなんて」わからないものですよね。僕はちっぽけな存在ですから。
なので、記事の掲載日を確認し、古かった場合は特に念入りに裏を取るようにしましょう。
この世界に踊り続けなくてもいいように。
(元ネタが古くてすんません。最近カラオケ行ったので…)

<a href="https://px.a8.net/svt/ejp?a8mat=1TQCL7+1NJD9U+CO4+6BU5T" rel="nofollow">
<img border="0" width="728" height="90" alt="" src="https://www20.a8.net/svt/bgt?aid=110404411100&wid=001&eno=01&mid=s00000001642001063000&mc=1"></a>
<img border="0" width="1" height="1" src="https://www17.a8.net/0.gif?a8mat=1TQCL7+1NJD9U+CO4+6BU5T" alt="">