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

WordPressでフィードアンテナを作成したので、その備忘録です。
まずは大雑把な仕組みと前準備について。

スポンサーリンク

はじめに

いきなりで申し訳ないのですが、この「WordPressアンテナ化」は自分のスキルをかなり超えています。
達人の「出来そうなので作ってみた」という軽いノリではありません。

他人様のコードで勉強しながら自分なりにアレンジを加えて出来たものです。
このためコードの文法が統一されていなかったり、周りくどかったりもします。
また勘違い/間違いもあるかと思いますので、それを踏まえて見ていただければ助かります。

システム条件

今回は以下の構成で作成をしました。

WordPress 4.0.1
テーマ:TwentyTwelve(子テーマ化済み)
レンタルサーバー:さくらインターネット(スタンダード)

SimplePieはWordPress同梱されているものを、CRONはさくらインターネットで用意されているものを使用しています。

基本的な考え方

まず、基本となる仕組みはこちらのサイトの記事を参考にしています。

WordPressでのアンテナサイト作成をめぐる冒険(照る照る坊主の青空)

こちらのサイトではWordPress用アンテナ構築テーマの販売もしています。
時間のない人やちょっと無理っぽい人は是非検討してみてください。

大まかな仕組みはこのようになっています。

20141204_01

特徴は投稿ページを通常の記事として使わずに、フィード情報の格納庫として利用していることです。
コレを呼び出して固定ページに記事一覧を出すという仕組みです。
すなわちユーザーに見せるページは固定ページだけということになります。

フィードの中身はどうなっている?

フィードのURLをChromeのアドレスバーに貼り付けると内容をそのまま確認することが出来ます。

20141204_02b

20141204_03b

この中から必要な箇所だけを取り出して使っていくということです。

現在配信されているフィードの仕様は

RSS1.0
RSS2.0
ATOM

の3種類があります。
しかし今回フィード取り込みで使う「SimplePie」であればこの違いを意識せずに処理できます。
SimplePieはWordPressに同梱されているので特に用意する必要はありません。

CRON

CRONは指定した時刻、間隔でプログラムを実行してくれる機能です。

20141204_feedantenna_09

今回はさくらインターネットのCRONを使用しています。
さくらインターネットの場合、CRONは「サーバーコントロールパネル」で設定が出来ます。

20141204_feedantenna_06b

CRONで実行するファイル(crawl.php)はサイトのルートディレクトリに置きます。
よくありがちな「wp」にWordPressをインストールしたのであれば、wpディレクトリ直下にcrawl.phpを置くということです。
そしてcrawl.phpのパーミッションは705に変更。

wpディレクトリ直下にcrawl.phpを置いた場合のCRON実行コマンドは、
(/home/アカウント名/www/wp/crawl.phpを指定したい場合)

cd /home/アカウント名/www/wp ; /usr/local/bin/php crawl.php 1> /dev/null

となります。

末尾の「1> /dev/null」は実行毎に結果をメールで連絡する処理を止めたい場合につけます。

また、プラグイン「Maintenance Mode」でサイトをメインテナンス中にしていると処理できないので注意が必要です。
他の一時的非公開プラグインでも同じように機能しなくなるかは不明ですが、上手く動かないときはこれを疑ってみてください。
これだけのことでかなりハマりました。

このcrawl.phpは直接叩くことでも実行が可能です。
例えばhttp://hogehoge.com/crawl.phpとアドレスバーに入力すれば実行できます。
機能テストではコレを多用しますので覚えておいてください。

実行間隔の設定についてはどこのレンタルサーバーでも条件は厳しいようで、さくらインターネットの場合は

・設定は5つまで
・実行間隔は1時間以上開けること
・CPU処理時間は60秒以内

と案内されています。
これを超えると予告なしに設定を解除されることがあります。
レンタルサーバーのCRONだけでは、リアルタイムの更新が必要なアンテナサイトは作成できないということです。
実際に使ってみたところ、40サイトほど巡回すると30秒ほどかかります。
サムネの取り込みやリサイズなどの機能を追加するとさらに処理時間は伸びてしまうでしょう。
あまり余裕がないので気をつけないといけません。

まとめ

まずは前準備的な内容をまとめてみました。

CRONの実行条件を見ると、格安レンタルサーバーでは大手アンテナサイトのように大量のサイトを短い更新頻度で取得することは出来ないようです。
この方法の場合はある程度ジャンルを絞って企画する必要があります。

次回は「フィード取得とデータベース取り込み」についてです。


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

コメントをどうぞ

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

CAPTCHA