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

前回の続きです。
getfeed関数についてです。

今回はこの右側部分です。

20141204_feedantenna_05b

スポンサーリンク

 getfeed関数

crawl.phpから呼び出されるgetfeed関数を見て行きましょう。
これは使用しているテーマの中のfunctions.phpに記載します。

必要はないのですが、カスタムフィールドに記事タイトルを追加する処理を加えています。
カスタムフィールドへ追加する場合は対象記事の投稿IDが必要になります。
このため、記事をデータベースに取り込んだときに自動採番される投稿IDを取得し、それを用いて再度データベースに取り込むという処理をします。
何かと使いそうなので、例として追加しておきました。
必要がなければupdate_post_metaの部分は削除してください。

フィード取り込みテスト

crawl.phpをWordPressをインストールしているディレクトリ(wpとか)に入れ、getfeed関数を使っているテーマのfunctions.phpに追記すると手動でも記事の取り込みが可能になります。

http://サイトURL/crawl.phpをブラウザに打ち込みエンターを叩くと、処理が実行されます。

20141204_feedantenna_11

記事一覧を見てみるとこのように取り込まれています。

20141204_feedantenna_14b

記事はどうなっているかというと、

20141204_feedantenna_15

このように必要な情報がまとめられた1行の本文となります。

カスタムフィールドも無事記事タイトルが追加されています。
記事タイトルを入れるという意味のない処理ですが、こういうことも出来るということで。

一度記事を取り込むとサイト名でタグが自動的に追加されています。

20141204_feedantenna_12

データベースはこんな感じ。

20141204_feedantenna_13

カスタムフィールドのテーブル「postmeta」にはこのように追加されています。

20141204_feedantenna_16

一番下であれば、23970という投稿IDの記事のcostom_titleというmeta_keyはこの内容ですという意味です。

手動の取り込みテストで問題なければ、crawl.phpをCRONで叩くように設定すればここまでは終了です。

注意点

1)セキュリティについて

指定したフィードではあるものの、外部データを自動で取り込んで処理をしていますのでどんなデータを扱っているのか分かりません。
セキュリティ対策は必要に応じて追加してください。

特にブログではPHPでも使う特殊文字である「”」「’」「<」「&」「=」などを記事タイトルや本文抜粋で使うことが非常に多く、悪意がなくても不具合を起こす可能性があります。
このためWordPressに入れるまでの前処理、取り出した後の後処理の部分にはクロスサイトスクリプティング対策をやっておいたほうがいいと思います。

2)データベース接続のエラーメッセージ

これは解決できなかったことなのですが、データベースに接続できなかったときのエラーメッセージがなぜか表示されません。

20141204_feedantenna_17

コードを間違えているのか、自分の環境が悪いのか、はたまたそういう仕様なのか、全く原因がわからない状態です。

他の2箇所のセレクトの部分はキチンとエラーコードが出るのですが、このデータベースの接続だけがエラーコードの取得が出来ないのです。

20141204_feedantenna_18

エラーメッセージが出ないだけで機能は問題ないので大したことではないのですが、気持ちが悪いなぁと。

もし分かる方がいらっしゃいましたら是非教えて下さい。

3)手動テスト時の注意

取得した記事を削除して繰り返しテストをすることになりますが、記事はゴミ箱から完全に消去しないと同じ記事を取り込むことができません。

20141204_feedantenna_19b

これはデータベース上に記事のステータスがtrashになっているだけなのです。
記事は完全に消去する必要があります。

まとめ

ここまでで記事の自動取り込みが可能になりました。

20141204_feedantenna_20

今回は記事抜粋はデータベースに取り込んではいますが使いません。
データベースに取り込むデータ、記事本文に表示させるデータは好みに応じて変化させてください。

またサイトを機能で差別化をしようとしたときにカスタムフィールドが役に立ちます。
カスタムフィールドはクリックカウンタや記事への評価など、公開後のユーザーの行動で動的に変化するものを扱うのにも適しています。
いろいろアイデアを試してみてください。

次回は固定ページにこの記事一覧を出力させます。

思った以上にまとめるのは大変です。
気長に待っていただけると助かります。

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

コメントをどうぞ

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

CAPTCHA