【WordPress】 WordPressをフィードアンテナ化するまとめ(その2)

WordPressアンテナ化の第二弾。
フィード取得とデータベース取り込みについてです。

スポンサーリンク

今回の課題

今回は下図のようにクローラーとデータベース書き込みの部分です。

20141204_feedantenna_10

クローラーの構成

フィードを取得するクローラーの処理を少し詳しくまとめるとこうなります。

20141204_feedantenna_05b

crawl.phpは子テーマのfunctions.php内の関数を呼び出すだけです。

crawl.php

crawl.phpのコードはこちら。

※フィードURLは御利用になるサイトのものに書き換えてからテストをしてください。

まずWordPress内の関数を使用するためにwp-load.phpを読み込んでいます。
あとはfunctions.php内に定義されているgetfeed関数を呼び出しています。

フィードを取得したいサイトを増やす場合は引数を変えた関数を追加すればよいということです。

引数は以下のとおり

①フィードURL

RSS1.0、RSS2.0、ATOMのなんでもOKです。
コメントだけのフィードだったり、サイトで指定されているURLでもうまく機能しない場合もありましたので、一度確認してからのほうがよいでしょう。

②取得記事件数

最新記事から何件を取得するかです。
当然多くすると処理が重くなります。
タブリの記事は除外しますので、巡回と記事更新の頻度に合わせて取りこぼしがない程度に設定します。

例えば多くて1日に3記事の記事が更新され、1時間に1回巡回するなら3件で設定しておけばほぼ間違いないです。
サイトの新規登録後、過去の記事も可能な限り取得したい場合は初回の巡回だけ取得件数を多くするとよいでしょう。

実際にアンテナサイトを運用してみると、公開直後に記事のタイトルや内容を修正して更新を繰り返すサイトが結構あります。
さらに更新のその都度フィードを配信しているサイトも稀にあります。
その場合は似たような記事がいくつも並んでしまうのです。

今回はこれを防止するため、「記事が同じURLの場合は最初の記事だけを残す」という重複防止をしています。

ただし更新を繰り返すサイトがあるなら取得件数を多めにしておくことが必要です。
1時間に1回最新の3件を取得するとしていても、その1時間の間に

記事Aを公開
記事Bを公開
記事Bを修正、更新
記事Bを再修正、再更新

とされ、更新でもフィードを配信する設定になっていた場合は記事Aが取得出来ないということです。

③カテゴリーNo.

記事を分類するためにWordPressのカテゴリーを利用します。
今回であればWordPressの「海外の反応」というカテゴリーに入れるということです。
番号はWordPressで作成したカテゴリーのtag_idです。

tag_idの調べ方は、作成したカテゴリーの上にカーソルを持って行くと・・・

20141204_feedantenna_07b

ブラウザ下部に表示されるURLの「tag_id=〇〇」がそれです。

20141204_feedantenna_08b

今回の場合は38を指定するとカテゴリー「海外の反応」に入るというわけです。

ジャンルが一つであればこのカテゴリーの指定も必要ではないのですが、例えば猫アンテナを拡張して犬アンテナも作りたくなったときなどに役に立ちます。
tag_idを指定してデータベースから取り出すことで簡単に分類できるというわけです。

なおWordPressではタグとカテゴリーのidは同じtag_idで管理され、ダブりなしの連番で自動的に生成されます。
このためカテゴリーやタグを作ったり消したりすると空番ができますので、「38の次だから39」と決めつけずに毎回調べたほうが無難です。

長くなりそうなので分割します。
getfeed関数は次ページにて。


スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

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

CAPTCHA